首页
Python
Java
IOS
Andorid
NodeJS
JavaScript
HTML5
【
hdu-2045 递归
】的更多相关文章
HDU 2045 不容易系列之(3)—— LELE的RPG难题(递归/动态规划)
不容易系列之(3)—— LELE的RPG难题 Problem Description 人称“AC女之杀手”的超级偶像LELE最近忽然玩起了深沉,这可急坏了众多“Cole”(LELE的粉丝,即"可乐"),经过多方打探,某资深Cole终于知道了原因,原来,LELE最近研究起了著名的RPG难题: 有排成一行的n个方格,用红(Red).粉(Pink).绿(Green)三色涂每个格子,每格涂一色,要求任何相邻的方格不能同色,且首尾两格也不同色.求全部的满足要求的涂法. 以上就是著名的RPG难题.…
HDU 2045 RPG难题
http://acm.hdu.edu.cn/showproblem.php?pid=2045 这道题也是用倒推: 先假设前n-2个块都已经涂好,涂第n-1块时有以下两种情况: 1.n-1和1相同,则n有两种涂法.退回n-2接着推 2.n-1和1不同,则n只有一种涂法,退回n-1接着推 #include<iostream> #include<cmath> #include<algorithm> using namespace std; int main() { int n…
HDU 1274 递归拼接字符串
题目大意: 根据所给的数字,表示其相连的字符的输出个数,或是下一个括号中的所有字符的输出个数 每一个相互对应的 '(' 和 ')' 中的所有字母均作为一组数据处理 在每一次dfs过程中都处理好这样一个对应组中间的字符 再根据前面所带的数字k 循环k次输出自己要的数据 每次输出一个字母,因为无论多复杂的字符串都能够转化成最后只带一个数字和一个字母连接的形式,第38行代码有较详细解释 #include <cstring> #include <cstdio> using namespac…
HDU 2045 不容易系列之(3)―― LELE的RPG难题(递推)
题意:有排成一行的n个方格,用红(Red).粉(Pink).绿(Green)三色涂每个格子,每格涂一色,要求任何相邻的方格不能同色,且首尾两格也不同色.求全部的满足要求的涂法. 题解:本来当n=1时,答案是0的(首尾不同时不可能的),但是这儿答案是3 接着我们可以这样来想 当n=2时答案是6 当n>2时,我们等于前一个(dp[i-1])的个数加上,最后一位有两种可能(固定第i-1位不变时).所以就是 dp[i]=dp[i-1]+2*dp[i-2](i>2) #include<set>…
hdu 2045 不容易系列之(3)—— LELE的RPG难题
解题思路: f(n)=1,2,.....n-2,n-1,n 前n-2个已经涂好,那么n-1有两种可能 1.n-1与n-2和1 的颜色都不同 1 粉, n-2 红, n-1 绿. 那么n的颜色可以说是没得选了f(n-1)种可能 1 红, n-2 绿 , n-1 粉 1 绿, n-2 红, n-1 粉 2.n-1与n-2不同但与1相同,那么n就有两种选择 1 红, n-2 绿, n-1 红, n 绿/粉 1 绿, n-2 粉, n-1 绿, …
hdu 2045
Ps:上课的时候用iPad做的...没有调试..一次AC机.就是简单的递推... 代码: #include "stdio.h"#include "math.h"long long dp[55];int main(){ int i,n; dp[0]=6; for(i=1;i<55;i++){ dp[i]=6*pow(2,i)-dp[i-1]; } while(~scanf("%d",&n)){ if(n==1){ printf(&qu…
HDU 2045 不容易系列之(3)—— LELE的RPG难题 (递推)
题意:略. 析:首先是假设前n-2个已经放好了,那么放第 n 个时,先考虑一下第 n-1 放的是什么,那么有两种情况. 如果n-1放的是和第1个一样的,那么第 n 个就可以在n-2的基础上放2个,也就是2 * f(n-2),也就是说,因为第n-1和第1个一样, 所以第 n 个有两种(不和第1个样的其他种).那么如果第n-1个放的不和第1个一样呢?那么第 n 个就和第 n-1 个一样,没有选择,只能放一个. 代码如下: #pragma comment(linker, "/STACK:1024000…
HDU 2045 不容易系列之(3)—— LELE的RPG难题(递推)
点我看题目 题意 : 中文题不解释. 思路 :先算了第3个第4个,算的时候发现只要在已经枚举出来的前边的状态中往后添加字母就行了,如果两个的都已经表示出来了,那第三个就可以在每个第二个后边加一个,在第一个后边加两个. #include <stdio.h> #define LL __int64 LL a[] ; void chart() { a[] = ; a[] = ; a[] = ; ; i < ; i++) a[i] = a[i-]+a[i-]* ; } int main() {…
HDU 2045 不easy系列之(3)—— LELE的RPG难题
思路: 1.若前n-1位涂的颜色是符合条件的,则因为首尾不同,再加入一位时,仅仅有1种方法:即s[n] = s[n-1] 2.若前n-1位组成的串不符合,再加入一位后合法.即由于首尾同样而引起的不合法,那么前n-2位组成的串必然合法.此时第n位有2种加入方法.即s[n] = 2*s[n-2] 所以AC代码: <span style="font-family:KaiTi_GB2312;font-size:24px;">#include<stdio.h> int m…
hdu 2045 递推
从n>=4开始考虑,只考虑n-1和1的颜色是否相等情况.推出公式F(n)=F(n-1)+2*F(n-2) AC代码: #include<cstdio> const int maxn=55; long long ans[maxn]; void solve(){ ans[1]=3; ans[2]=6; ans[3]=6; for(int i=4;i<=50;++i) ans[i]=ans[i-1]+2*ans[i-2]; } int main(){ solve(); int n; wh…