函数递归简单题-hdoj-2044 2018-一只小蜜蜂 母牛的故事
2016-03-19 14:01
525 查看
题目:一只小蜜蜂
递归做法:
一题递归类型的题目,比较简单。我犯了两个粗心的错误,一个是终点判断使用了a,还有一个是main函数里面的输入格式写错了...也感谢兴桔的讲解。
贴上兴桔ppt的一部分,和函数递归的模板和深度优先搜索有关系。
![](http://images2015.cnblogs.com/blog/885822/201603/885822-20160319211457349-912285283.png)
这题是规律题,用平常的递归会T,规律能看出符合斐波那契数列,所以这里给出它的做法。
参考博客:杭电2044一只小蜜蜂
博主的公告也很有意思:“屌丝分为两种,一种是没有梦想,浑噩一生的屌丝,另一种是怀揣着梦想,奋斗一生的屌丝。”
题目:母牛的故事
代码:
解释一下递归的语句:
从第n年开始往回找到第一年,前3年牛的数目是按+1的规律来递增的,当年数大于3的时候,母牛的数目等于去年的母牛数目+今年生产的母牛数,今年生产的母牛数由题意(小牛过三年能生育)等于三年前的总牛数,过了三年以后当时的牛都能生。
递归做法:
#include<cstdio> #include<iostream> #include<stdlib.h> #include<stack> #include<string> using namespace std; int cnt=0;//count int a,b; //int flag=0; int tran[3]={1,2};//坐标移动 void done(int x) { int begin=0,bet=0; begin=x; if(begin>b)return ;//越界 if(begin==b) { //cout<<"1"<<endl; cnt++; return ; }//到达终点 else { for(int i=0;i<2;i++) { bet=begin+tran[i];//移动位置 done(bet); //cout<<"2"<<endl; } } return ; } int main() { int n; int i,j; scanf("%d",&n); for(i=1;i<=n;i++) { scanf("%d%d",&a,&b); done(a); printf("%d\n",cnt); cnt=0; flag=0; } return 0; }
一题递归类型的题目,比较简单。我犯了两个粗心的错误,一个是终点判断使用了a,还有一个是main函数里面的输入格式写错了...也感谢兴桔的讲解。
贴上兴桔ppt的一部分,和函数递归的模板和深度优先搜索有关系。
![](http://images2015.cnblogs.com/blog/885822/201603/885822-20160319211457349-912285283.png)
这题是规律题,用平常的递归会T,规律能看出符合斐波那契数列,所以这里给出它的做法。
#include<stdio.h> #include<string.h> using namespace std; int main() { long long int f[55]; f[1]=1; f[2]=2; for(int i=3;i<55;i++) { f[i]=f[i-1]+f[i-2]; } int t; scanf("%d",&t); while(t--) { int n,m; scanf("%d%d",&n,&m); printf("%lld\n",f[m-n]); } }
参考博客:杭电2044一只小蜜蜂
博主的公告也很有意思:“屌丝分为两种,一种是没有梦想,浑噩一生的屌丝,另一种是怀揣着梦想,奋斗一生的屌丝。”
题目:母牛的故事
代码:
#include<cstdio> #include<iostream> #include<stdlib.h> using namespace std; int done(int x) { int c; if(x<=3) c=x; else c=done(x-1)+done(x-3); return c; } int main() { int n; int tot=0; while(scanf("%d",&n)!=EOF) { if(n==0)break; tot=done(n); printf("%d\n",tot); tot=0; } return 0; }
解释一下递归的语句:
int done(int x) { int c; if(x<=3) c=x; else c=done(x-1)+done(x-3); return c; }
从第n年开始往回找到第一年,前3年牛的数目是按+1的规律来递增的,当年数大于3的时候,母牛的数目等于去年的母牛数目+今年生产的母牛数,今年生产的母牛数由题意(小牛过三年能生育)等于三年前的总牛数,过了三年以后当时的牛都能生。
相关文章推荐
- DFS回溯-函数递归-xiaoz triangles
- 进制转换 hdoj-2031
- hdoj-2058-the sum problem
- BFS-迷宫问题-用宽度(广度)优先搜索解决最优路径问题
- hdoj-2086-A1=?
- 判断字符串中有无相同字符
- phpadmin增加使得项目能连接数据库
- hdoj-2089-不要62
- 深度优先搜索之小z的房子与验证码识别
- hdoj-2098-分拆素数和
- 深度优先搜索初尝试-DFS-LakeCounting POJ No.2386
- hdoj-2053-Switch Game
- 《算法竞赛入门经典》习题及反思
- 高精度N的阶乘-N!
- 列举一些有所帮助的blog和文章
- hdoj-2039-三角形
- hdoj-2035-人见人爱a^b
- codeforces 655D D. Robot Rapping Results Report(拓扑排序+拓扑序记录)
- C#中的try catch finally
- 振兴中华--蓝桥杯