函數遞歸簡單題-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的一部分,和函數遞歸的模板和深度優先搜索有關係。

這題是規律題,用平常的遞歸會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的時候,母牛的數目等於去年的母牛數目+今年生產的母牛數,今年生產的母牛數由題意(小牛過三年能生育)等於三年前的總牛數,過了三年以後當時的牛都能生。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章