//20200322update

最近在重新把hdoj11页做一遍,发现递推还是有些模糊,就重新来更新下,新增一题2045

首先是2045题(RPG问题)

思路:分两种情况

1. 第n-1个元素和第一个元素同色,则第n-2个元素和第一个元素肯定不同色(因为之前的序列都是合法的),那么最后一个元素有两种选法,则这种情况的数量为2*f(n-2)

2. 第n-1个元素和第一个元素不同色,则最后一个格子只有一种选法,故这种情况数量为f(n-1)

故所有情况为二者之和

source code:

package hduoj;

import java.util.Scanner;

public class hdoj_2045 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
long[] res = new long[51];
res[1] = 3;
res[2] = 6;
res[3] = 6;//注意第三个要单独列出,因为有三个元素的话,倒数第二个元素不可能和首元素相同
for(int i = 4;i<51;++i){
res[i] = res[i-1] + 2 * res[i-2];
} while(sc.hasNext()){
System.out.println(res[sc.nextInt()]);
}
}
}

接下来是2047题

这一题看了下我原来的博客,使用的找规律的方法,画出分支树然后找规律,这样比较难懂

所以换了一种做法,比上一种更好懂

思路:

也是分为两种情况

1. 最后一个元素是‘o’的字符串

2. 最后一个元素不是‘o’的字符串

创建一个n行2列的二维数组,将第一种情况的数量存在第一列,第二种存在第二列

则第n行的情况为

1. 最后一个元素为‘o’的字符串数量为n-1行第二列的数值(因为不能有两个‘o’连在一起)

2. 最后一个元素不是‘o’的字符串数量为两倍的n-1行所有数据的和(因为无论是哪种情况后面都可以加非‘o’字母,切有两种选法)

source code

import java.util.Scanner;
/** */
public class Main{ public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
long[][] dp = new long[40][2];
dp[0][0] = 1;
dp[0][1] = 2;
for(int i = 1;i<40;++i){
dp[i][0] = dp[i-1][1];
dp[i][1] = 2*(dp[i-1][1] + dp[i-1][0]);
} while(sc.hasNext()){ int i = sc.nextInt();
System.out.println(dp[i-1][0] + dp[i-1][1]);
} } }

---------------------------------------------------------------------

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2047

思路:先是列出了四个,但是没发现规律,然后开始画递归树,在其中找到了规律,算出递归式为f(n) = 2*[f(n-1)+f(n-2)]

递归树分析如下(有点潦草,看不懂可以留言,大致模型为嵌套):

source code:

package hduoj;

import java.util.Scanner;

public class hdoj_2047 {
/**
* 得出递归式:f(n) = 2*[f(n-1)+f(n-2)]
*/
public static void main(String[] args) {
long[] data = new long[41];
data[1] = 3;
data[2] = 8;
for(int i = 3;i<41;++i){
data[i] = 2*(data[i - 1]+data[i - 2]);
}
Scanner sc = new Scanner(System.in);
while(sc.hasNext()){
System.out.println(data[sc.nextInt()]);
}
}
}

代码已经ac

希望对大家有所帮助

以上

杭电oj_2047——阿牛的EOF牛肉串(java实现)的更多相关文章

  1. 杭电 2047 阿牛的EOF牛肉串 (递推)

    阿牛的EOF牛肉串 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total ...

  2. 杭电-------2047阿牛的eof牛肉串(C语言写)

    /* 主要看最后一个是否为O,若为O,则倒数第二个不能为O,则为a[n-2]*1*2; 若不为O,则最后一个有两个选择则为a[n-1]*2 */ #include<stdio.h> ] = ...

  3. 阿牛的EOF牛肉串[HDU2047]

    阿牛的EOF牛肉串 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total S ...

  4. HDU H204 阿牛的EOF牛肉串

    阿牛的EOF牛肉串 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Sub ...

  5. 阿牛的EOF牛肉串(递推)

    阿牛的EOF牛肉串 Time Limit : 2000/1000ms (Java/Other)   Memory Limit : 65536/32768K (Java/Other) Total Sub ...

  6. 阿牛的EOF牛肉串-记忆化搜索或动态规划

    C - 阿牛的EOF牛肉串 Time Limit:1000MS     Memory Limit:32768KB     64bit IO Format:%I64d & %I64u Submi ...

  7. T - 阿牛的EOF牛肉串(第二季水)

    Description          今年的ACM暑期集训队一共有18人,分为6支队伍.其中有一个叫做EOF的队伍,由04级的阿牛.XC以及05级的COY组成.在共同的集训生活中,大家建立了深厚的 ...

  8. 【递推】ZSC1074: 数学、阿牛的EOF牛肉串

    Description 今年的ACM暑期集训队一共有18人,分为6支队伍.其中有一个叫做EOF的队伍,由04级的阿牛.XC以及05级的COY组成.在共同的集训生活中,大家建立了深厚的友谊,阿牛准备做点 ...

  9. hdu 2047 阿牛的EOF牛肉串

    如果末尾加的是E或F,显然是2*a[i-1] 如果末尾加的是O,则末2位一定是EO或FO,则为2*a[i-2]. 然后两者相加 2*a[i-1]+2*a[i-2] = 2*(a[i-1]+a[i-2] ...

随机推荐

  1. 后端跨域的N种方法

    简单来说,CORS是一种访问机制,英文全称是Cross-Origin Resource Sharing,即我们常说的跨域资源共享,通过在服务器端设置响应头,把发起跨域的原始域名添加到Access-Co ...

  2. node中 package.json 文件说明

    1.概述 每个项目的根目录下面,一般都有一个package.json文件,定义了这个项目所需要的各种模块,以及项目的配置信息(比如名称.版本.许可证等元数据).npm install命令根据这个配置文 ...

  3. 如何用Eagle for Mac查看GIF动图的图文教程?

    Mac版Eagle怎样打开查看GIF动图?eagle mac版以其功能强大,设计简洁等特点深受用户的喜爱.在Eagle众多功能中,打开查看GIF动图这一功能也是非常简单又好用的.今天小编要给大家分享的 ...

  4. Goodnotes5

    Goodnotes5 看书做批注 →Goodnotes 可以放大细节,适合留白少的电子书做笔记. 在原来笔记中新添加空白行(选中之后下移) 1.笔记页面可以多页预览 2.选中图形工具可以画直线

  5. (办公)记事本_linux压缩命令

    参考谷粒学院的linux视频教程:http://www.gulixueyuan.com/course/300/task/7091/show 在Linux中可以识别的常见的压缩格式有十几种,比如&quo ...

  6. 【python基础语法】数字、布尔值(第1天课堂笔记)

    # 导入模块 import keyword # print语句将内容输出到控制台 print("hello world!") # pep8编码规范 # 代码快速格式化快捷键:ctr ...

  7. java课后作业10.14

    一.简单总结一下java中类的初始化的规律: 1.类的构造函数优先 2.初始化块儿和定义时候的赋值,这俩个初始化方法优先级是一样的,在程序中谁最后执行,那么程序就采用谁的初始化值. 二.在java中想 ...

  8. 论文阅读笔记(十七)【ICCV2017】:Dynamic Label Graph Matching for Unsupervised Video Re-Identification

    Introduction 文章主要提出了 Dynamic Graph Matching(DGM)方法,以非监督的方式对多个相机的行人视频中识别出正确匹配.错误匹配的结果.本文主要思想如下图: 具体而言 ...

  9. C# WinForm MessageBox.Show显示在窗体中间

    一.新建MessageBoxEx类,并添加以下代码. using System; using System.Windows.Forms; using System.Text; using System ...

  10. LAMP集成环境搭建

    本教程是在centos6.8 64位系统下进行操作 我们首先准备搭建LAMP环境 LAMP指的是Linux.Apache.MySQL 和 PHP 如果要安装PHP5.5 需要 首先rpm -ivh h ...