//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. 了解JavaScript的语法基础,值和变量

    通过JavaScript语法基础学习了解到1.怎么使用js/*通常js的引入和css一样,分为内部,外部和行内引入,执行自上而下,有着先后顺序*/:2.js的语法/*2.1js是用字母,数字.特殊字符 ...

  2. MySQL安全管理

    数据库服务器通常包含关键的数据,确保这些数据的安全和完整需要利用访问控制. 一.访问控制 MySQL服务器的安全基础:用户应该对他们需要的数据具有适当的访问权,既不能多也不能少. 访问控制:你需要给用 ...

  3. RT-Thread can - STM32F103ZET6

    SDK版本v4.0.2 目前,RT-Thread Studio还不能够自定义添加can设备.下面介绍手动添加过程: 使用RT-Thread Studio创建一个简单工程 使用RT-Thread env ...

  4. numpy 消除Futurewarning

    numpy版本过高 1.查看numpy版本 import numpy as np np.__version__ 2.卸载numpy sudo pip3 uninstall numpy 3.安装较低版本 ...

  5. 【已解决2】pyinstaller UnicodeDecodeError: ‘utf-8’ codec can’t decode byte 0xce in position 110: invalid continuation byte

    python打包exe解码错误问题       最近做了一个小项目,其中把自己写的python打包成exe文件.我用的是pyinstaller. 只需要打包主程序py文件就ok. 在打包过程中,遇到一 ...

  6. css基本概念与css核心语法介绍

    css基本概念 css是什么?不需要了解太多文字类介绍,记住css是层叠样式表,HTML是页面结构,css负责页面样式,javascrt负责静态页面的交互.CSS 能够对网页中元素位置的排版进行像素级 ...

  7. pyqt5加载pdf文档失败

    import sys from PyQt5.QtWidgets import QApplication, QMainWindow, QFileDialog from PyPDF2 import Pdf ...

  8. Electron – 基础学习(2): 项目打包成exe桌面应用 之electron-packager

    项目创建完成,启动正常,接下来就是项目打包了.将测试Demo打包成exe桌面应用,点击exe文件,运行项目. 书接上文,创建项目有三种方式 Git拷贝.直接创建:通过electron社群提供的命令行工 ...

  9. nginx 反向代理及 https 证书配置

    nginx 反向代理及 https 证书配置 author: yunqimg(ccxtcxx0) 1. 编译安装nginx 从官网下载 nginx源码, 并编译安装. ./configure --pr ...

  10. 字节跳动挤上少儿英语末班车,gogokid能否抵达终点?

    编辑 | 于斌 出品 | 于见(mpyujian) 近日,据多方消息,字节跳动旗下少儿英语品牌gogokid,迎来了一位新的90后CEO金钱琛.据知情人士透露,金钱琛入职不到两个月,目前全面掌管gog ...