找規律題(母牛的故事、小了白了兔的故事及個人以為的可能延伸)
阿新 • • 發佈:2018-11-07
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; }