寒假集训作业(5)——递归与递推
来源:互联网 发布:科目二模拟驾驶软件 编辑:程序博客网 时间:2024/05/28 23:21
A
http://acm.sdut.edu.cn/sdutoj/problem.php?action=showproblem&problemid=1018
#include <iostream>using namespace std;long long f[51]={1,2,3};int n,i;int main(){ for (i=3;i<=50;++i) f[i]=f[i-1]+f[i-2]; while (cin>>n) { cout<<f[n-1]<<endl; } return 0;}
B
http://acm.sdut.edu.cn/sdutoj/problem.php?action=showproblem&problemid=1019
#include <iostream>using namespace std;long long f[40]={0,3,8};int n,i;int main(){ for (i=3;i<40;++i) f[i]=2*(f[i-1]+f[i-2]); while (cin>>n) { cout<<f[n]<<endl; } return 0;}
C
http://acm.sdut.edu.cn/sdutoj/problem.php?action=showproblem&problemid=2044
#include <iostream>using namespace std;int main(){ int a,b,i; long n,f[50];f[1]=f[2]=1; while(cin>>a>>b>>n) {if(a==0&&b==0&&n==0)break;if(a==7&&b==7) cout<<"0"<<endl;else if(a!=7&&b!=7){for(i=3;i<=48;i++) f[i%48]=(a*f[i-1]+b*f[i-2])%7; cout<<f[n%48]<<endl; } }}
D
http://acm.sdut.edu.cn/sdutoj/problem.php?action=showproblem&problemid=2058
#include <iostream>using namespace std;long long f[151]={0,0,1};int n,i;int main(){ for (i=3;i<=150;i++) { f[i]=(i-1)*(f[i-1]+f[i-2]); } while (cin>>n) { cout<<f[n]<<endl; } return 0;}
E//not mine idea...
http://acm.sdut.edu.cn/sdutoj/problem.php?action=showproblem&problemid=2067
#include <iostream>#include <iomanip>#include <string.h>#include <math.h>using namespace std;struct num{int s[1000];int top;}a[260];int main(){void deal(int x,int y,int z);int i,j,n,m,s,t;(a[1].s)[0]=1; (a[2].s)[0]=3;a[1].top=1; a[2].top=1;for(i=3;i<=250;i++){deal(i-1,i-2,i);}while(cin>>n){if(n==0){cout<<1<<endl;}else{for(i=a[n].top-1;i>=0;i--){cout<<(a[n].s)[i];}cout<<endl;}}return 0;}void deal(int x,int y,int z){int i,j,l1,l2,max;int b[1000],c[1000],d[1000];l1=a[x].top;l2=a[y].top;memset(b,0,sizeof(b));memset(c,0,sizeof(c));memset(d,0,sizeof(d));for(i=0;i<=l1-1;i++){b[i]=(a[x].s)[i];}for(i=0;i<=l2-1;i++){c[i]=2*((a[y].s)[i]);}if(l1>l2){max=l1;}else{max=l2;}for(i=0;i<=max-1;i++){d[i]=b[i]+c[i];}for(i=0;i<=max-1;i++){if(d[i]>=10){d[i+1]+=d[i]/10;d[i]=d[i]%10;if(i==max-1){max+=1;}}}a[z].top=max;for(i=0;i<=max-1;i++){(a[z].s)[i]=d[i];}}
F
http://acm.sdut.edu.cn/sdutoj/problem.php?action=showproblem&problemid=1615
#include <iostream>using namespace std;long long f[51]={0,3,6,6};int n,i;int main(){ for (i=4;i<=50;i++) { f[i]=f[i-1]+2*f[i-2]; } while (cin>>n) { cout<<f[n]<<endl; } return 0;}
上述代码是错误的,因为当n=3的时候,结果应该是6而不是12。我们在计算n=3的时候,是不存在ABA这样染色的,而后续计算的时候,我们计算了双色染色的情况,如果照此思路,n=3的时候应该正常输出6+3=9,但显然不是。n=3的时候不存在双色染色。而n=4的时候正确结果也应该是12,而不是18。后面的正确性也值得怀疑啊= =。。
所谓递归题或者递推题,目前遇到的水题大多都可用f(n)=a*f(n-1)+b*f(n-2)推出来,上述题仅有巴蜀之危需改换思路,书上有详细介绍。
- 寒假集训作业(5)——递归与递推
- 寒假集训作业(3)——栈与队列
- 寒假集训作业(1)——结构体
- 寒假集训作业(2)——链表
- 寒假集训作业(4)——字符串
- 寒假集训作业(6)——动态规划初步
- 寒假集训作业(7)——排序查找
- 寒假集训作业(8)——数学问题
- 寒假集训作业(9)——动态规划初步(2)
- 寒假第五天--递推递归--三国佚事——巴蜀之危
- 寒假第五天--递推递归--不容易系列之(3)—— LELE的RPG难题
- 寒假集训——KMP
- 寒假集训——AreYouBusy
- 寒假集训——饭卡
- 寒假第五天--递推递归--递归的函数
- 寒假集训——字典树(模板)
- 寒假集训附加题目题解报告(5)——求e
- 寒假集训第四天——排序
- Cache系列Ehcache
- IOS学习笔记(11)TableView中移动cell和section
- MySQL 锁
- php正则匹配图片
- 单元测试技术JMOCK引用
- 寒假集训作业(5)——递归与递推
- tomcat下部署solr 4.0
- JDBC的数据格式
- 杭电ACM 2047 阿牛的EOF牛肉串
- EasyMock应用
- double 转char的一个方法sprintf_s
- 关闭FORM时出现红色进度条
- “如果你倾尽全力,只是为了击败在做同样工作的其他公司,那这样的工作怎么会令人兴奋?这就是许多公司衰落的原因。
- ORACLE EBS常用表及查询语句(最终整理版)