杭电oj_2047——阿牛的EOF牛肉串(java实现)
//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实现)的更多相关文章
- 杭电 2047 阿牛的EOF牛肉串 (递推)
阿牛的EOF牛肉串 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total ...
- 杭电-------2047阿牛的eof牛肉串(C语言写)
/* 主要看最后一个是否为O,若为O,则倒数第二个不能为O,则为a[n-2]*1*2; 若不为O,则最后一个有两个选择则为a[n-1]*2 */ #include<stdio.h> ] = ...
- 阿牛的EOF牛肉串[HDU2047]
阿牛的EOF牛肉串 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total S ...
- HDU H204 阿牛的EOF牛肉串
阿牛的EOF牛肉串 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Sub ...
- 阿牛的EOF牛肉串(递推)
阿牛的EOF牛肉串 Time Limit : 2000/1000ms (Java/Other) Memory Limit : 65536/32768K (Java/Other) Total Sub ...
- 阿牛的EOF牛肉串-记忆化搜索或动态规划
C - 阿牛的EOF牛肉串 Time Limit:1000MS Memory Limit:32768KB 64bit IO Format:%I64d & %I64u Submi ...
- T - 阿牛的EOF牛肉串(第二季水)
Description 今年的ACM暑期集训队一共有18人,分为6支队伍.其中有一个叫做EOF的队伍,由04级的阿牛.XC以及05级的COY组成.在共同的集训生活中,大家建立了深厚的 ...
- 【递推】ZSC1074: 数学、阿牛的EOF牛肉串
Description 今年的ACM暑期集训队一共有18人,分为6支队伍.其中有一个叫做EOF的队伍,由04级的阿牛.XC以及05级的COY组成.在共同的集训生活中,大家建立了深厚的友谊,阿牛准备做点 ...
- 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] ...
随机推荐
- numpy 消除Futurewarning
numpy版本过高 1.查看numpy版本 import numpy as np np.__version__ 2.卸载numpy sudo pip3 uninstall numpy 3.安装较低版本 ...
- 在香蕉派的树莓派系统上配置 Syncthing 自启动
在香蕉派的树莓派系统上配置 Syncthing 自启动 —— 魏刘宏 2020 年 1 月 19 日 首先做个名词解释,” 香蕉派” 是国内一款山寨树莓派的硬件产品,” 树莓派系统” 指的是”rasp ...
- LaTex安装介绍
写在前面 很多的会议.期刊要求投稿使用LaTex编辑,而不是Word,使用好LaTex后,论文的排版任务确实会变得轻松. 1.下载软件 LaTex有很多衍生版,常用的推荐是Tex live,安装方式选 ...
- spark集群
https://blog.csdn.net/boling_cavalry/article/details/86747258 https://www.cnblogs.com/xuliangxing/p/ ...
- GraphQL + React Apollo + React Hook 大型项目实战(32 个视频)
GraphQL + React Apollo + React Hook 大型项目实战(32 个视频) GraphQL + React Apollo + React Hook 大型项目实战 #1 介绍「 ...
- MySQL优化、锁
1. MySQL优化-查看执行记录 MySQL 提供了一个 EXPLAIN 命令, 它可以对 SELECT 语句进行分析, 并输出 SELECT 执行的详细信息, 以供开发人员针对性优化. 使用ex ...
- 浅谈python的第三方库——pandas(终)
作为pandas系列的最终章,本文引出一个数据"复制"问题. 示例如下: 从上图中可以看到:我们对data_pd做了删除一行的操作,但是这并没有改变变量data_pd在内存中的值, ...
- P1553 数字反转(升级版)(copy(),reverse(),find(),substr(),erase())
题目描述 给定一个数,请将该数各个位上数字反转得到一个新数. 这次与 NOIp2011 普及组第一题不同的是:这个数可以是小数,分数,百分数,整数.整数反转是将所有数位对调:小数反转是把整数部分的数反 ...
- spawn id exp6 not open
原因 脚本没有被执行 解决方案 手动执行该条命令参看报错的原因
- php ftp 使用 以及 php_connect_nonb() failed: Operation now in progress (115)
设置 ftp_pasv($conn,true); 会出现下面错误 不设置 调用ftp 连接没问题 ftp_nlist ftp_put ftp_get 等函数都不成功 ftp_nb_fput( ...