杭电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] ...
随机推荐
- ASP.NET Core MVC学习笔记
最近由于疫情紧张,遂在家办公,在领导的带领下,学习了一下.Net Core MVC. 一,构建web应用 1.选择c#-所有平台-web 找到ASP.NET Core web应用程序 2.项目命名之 ...
- JS常见的表单验证,H5自带的验证和正则表达式的验证
H5验证 自带的验证无法满足需求: <form action="" method="get"> name:<input type=" ...
- Android中Chronometer计时器的简单使用
场景 实现效果如下 注: 博客: https://blog.csdn.net/badao_liumang_qizhi 关注公众号 霸道的程序猿 获取编程相关电子书.教程推送与免费下载. 实现 将布局改 ...
- 源码浅析:InnoDB聚集索引如何定位到数据的物理位置,并从磁盘读取
索引结构概述: MyISAM索引文件和数据文件是分离的,索引文件仅保存数据记录的地址.这与Oracle的索引结构相似,比较好理解.那么,常用的Innodb聚集索引结构是怎样的呢? InnoDB的数据文 ...
- mysql 5.7.28 中GROUP BY报错问题 SELECT list is not in GROUP BY clause and contains no
----mysql 5.7.28 中GROUP BY报错问题 SELECT list is not in GROUP BY clause and contains no------ 解决方案: sel ...
- redis两种持久化方式RDB和AOF
目录 前言 1. Redis 数据库结构 2. RDB 持久化 2.1. RDB 的创建和载入 2.1.1. 手动触发保存 SAVE 命令 BGSAVE 命令 SAVE 和 BGSAVE 的比较 2. ...
- MySql优化之mycat
1. 解压mycat,不要放在有中文目录的地方 下载地址:http://dl.mycat.io/1.6-RELEASE/2 .修改mycat解压目录下的conf文件夹中server.xml文件,配置 ...
- go 并发编程
进程 线程 协程 设置golang运行cpu数 1.主线程和协程同时执行 package main import ( "fmt" "strconv" " ...
- libgdiplus安装配置
1.下载安装包:wget http://download.mono-project.com/sources/libgdiplus/libgdiplus0-6.0.4.tar.gz2.解压缩.编译安装 ...
- 简单的leetcode题
简单的leetcode题 环绕字符串中唯一的子字符串 把字符串 s 看作是\("abcdefghijklmnopqrstuvwxyz"\)的无限环绕字符串,所以 s 看起来是这样的 ...