函数递归简单题-hdoj-2044 2018-一只小蜜蜂 母牛的故事

题目:一只小蜜蜂

递归做法:

#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的一部分,和函数递归的模板和深度优先搜索有关系。
函数递归简单题-hdoj-2044 2018-一只小蜜蜂 母牛的故事_第1张图片

这题是规律题,用平常的递归会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的时候,母牛的数目等于去年的母牛数目+今年生产的母牛数,今年生产的母牛数由题意(小牛过三年能生育)等于三年前的总牛数,过了三年以后当时的牛都能生。

你可能感兴趣的:(函数递归简单题-hdoj-2044 2018-一只小蜜蜂 母牛的故事)