寒假训练 递推专题
2015-01-27 13:32
183 查看
问题 A : 贴瓷砖
问题分析:这道题类似于爬楼梯问题,采用递推算法,关键是找到递推规律:用f表示n列的方案数,则f
:=f[n-1]+2*f[n-2]。
分析易得f[0]=0,f[1]=1,f[2]=3
代码:
#include <stdio.h> int main() { int r[31]; int T; int n; scanf("%d", &T); r[0] = 0; r[1] = 1; r[2] = 3; for(n = 3; n <= 30; n ++) r = r[n-1] + r[n-2]*2; while(T--) { scanf("%d",&n); printf("%d\n",r ); } return 0; }
问题 B : 统计方案
问题分析:设f表示走n步的情况,最后一步可能由三种走法,向上,向左或向右,而无论倒数第二步怎么走,最后一步都能向上,所以最后一步向上的走法为f[n-1];
当最后一步向左或向右时要考虑第n-1步,如果第n-1步向上(方案为f[n-2])则,第n步向左或向右的方案为2*f[n-2],如果第n-1步不向上(方案为f[n-1]-f[n-2]),则最后一步向左或向右的情况为f[n-1]-f[n-2];
然后分析可得第一步结果是3,第二步有7种可能,往后递推即可。
代码:
#include<stdio.h> int main() { long int f[26]; int t,i,n; f[1]=3;f[2]=7; for(i=3;i<22;i++) f[i]=f[i-1]*2+f[i-2]; scanf("%d",&t); while(t--) { scanf("%d",&n); printf("%ld\n",f ); } return 0; }
问题 C : 小明养猪的故事
问题分析:和斐波那契数列相关的问题代码:
#include<stdio.h> int main() { int a,b; int fibonacci[22]; fibonacci[0] = 1; fibonacci[1] = 2; for(int i=2; i<21; i++) fibonacci[i] = fibonacci[i-1] + fibonacci[i-2]; scanf("%d", &b); while(b--) { scanf("%d", &a); printf("%d\n", fibonacci[a-1]); } return 0; }
问题 D : 小明的烦恼
问题分析:参考第一题思路,整理递推公式。本题目需要考虑N为奇数和偶数时的不同情况,N为奇数时,公式为: a[i]=a[i-1]*2-1;
N为偶数时,公式为:a[i]=a[i-1]*2+1;
代码:
#include<stdio.h> int main() { int n,i,a[36]; a[0]=0; a[1]=1; for(i=2;i<=35;i++) if(i%2) a[i]=a[i-1]*2-1; else a[i]=a[i-1]*2+1; scanf("%d",&a[0]); while(a[0]--) { scanf("%d",&n); printf("%d\n",a ); } return 0; }
问题 E : 不容易系列之一
问题分析:这个问题需要用到错排公式,大家百度一下就知道是什么鬼了,递推公式为f=(n-1)*(f[n-1]+f[n-2])
代码:
#include<iostream> using namespace std; long long set[25]; void fun() { memset(set,0,sizeof(set)); set[1]=0; set[2]=1; for(int i=3;i<25;i++) { set[i]=(i-1)*(set[i-1]+set[i-2]); } } int main() { fun(); int n; while(cin>>n) { cout<<set <<endl; } return 0; }
相关文章推荐
- 递推求解专题训练
- NOJ寒假专题训练 Round #1 Search D~H题题解 另附A~C题解地址
- 2014寒假专题训练题解
- TOJ寒假集训专题训练1-STL
- HPUOJ---2017寒假训练--专题3/A-Til the Cows Come Home(最短路-dijkstra)
- HPUOJ---2017寒假训练--专题2/L-还是畅通工程
- 寒假训练--字符串--字符串扩展
- HPUOJ---2017寒假作业--专题-1/H-不要62
- 寒假训练--二分哈希--小明的花费预算
- HPUOJ---2017寒假作业--专题-1/N-Rightmost Digit
- HPUOJ---2017寒假作业--专题0/A-前m大的数
- HFUT&AHU组团训练(一)----DP专题
- pku 2506 Tiling 第一周训练——递推(大整数)
- [专题训练]数论专题1
- 寒假训练报告1.30(LIS和LCS转换)
- DFS-BFS搜索专题【经典训练题】【有时间一个个做下来】
- 寒假训练2018.2.6训练日志------dp学习(一)
- 递推递归专题 I 蟠桃记
- hdu线段树专题训练
- 二分暑假专题 训练记录 2017-7-29