1. 程式人生 > >找規律題(母牛的故事、小了白了兔的故事及個人以為的可能延伸)

找規律題(母牛的故事、小了白了兔的故事及個人以為的可能延伸)

1.有一頭母牛,它每年年初生一頭小母牛。每頭小母牛從第四個年頭開始,每年年初也生一頭小母牛。請程式設計實現在第n年的時候,共有多少頭母牛?

前0-n年個數分別為
0 1 2 3 4 5 6 (年)
1 1 2 3 4 6 9 13 19
可以看出規律f[n]=f[n-1]+f[n-3];

題解:

#include<bits/stdc++.h>
#define inf 0x3f3f3f3f
using namespace std;
int main()
{
    int n;
    long long f[1000];
    f[0]=1;
    f[1]=1;
    f[2]=2;
    f[3]=3;
    for(int i=4;i<=60;i++){
        f[i]=f[i-1]+f[i-3];
    }
    while(cin>>n&&n!=0){
        cout<<f[n]<<endl;
    }
    return 0;
}


 2.有一對兔子,從出生後第 3 個月起每個月都生一對兔子,小兔子長到第四個月 後每個月又生一對兔子,假如兔子都不死,問每個月的兔子總數為多少?(輸 出 24 個月內,每個月的兔子總數為多少) 

不難看出公式為f[n]=f[n-1]+f[n-2];

題解:

#include<bits/stdc++.h>
#define inf 0x3f3f3f3f
using namespace std;
int main()
{
    int n;
    long long f[1000];
    f[0]=1;
    f[1]=1;
    f[2]=2;
    for(int i=3;i<=24;i++){
        f[i]=f[i-1]+f[i-2];
    }
    while(cin>>n&&n!=0){
        cout<<f[n]<<endl;
    }
    return 0;
}


那麼上面的n個月、年起小生物可以再生怎麼求解數量呢,我認為是這樣

#include<bits/stdc++.h>
#define inf 0x3f3f3f3f
using namespace std;
int main()
{
    int n,m;
    long long f[1000];
    cin>>m;
    for(int i=0;i<=m;i++){
        f[i]=i;
    }
    for(int i=m+1; i<=24; i++)
    {
        f[i]=f[i-1]+f[i-m+1];
    }
    while(cin>>n&&n!=0)
    {
        cout<<f[n]<<endl;
    }
    return 0;
}