杭電HDU2018 奶牛的故事
有一頭母牛,它每年年初生一頭小母牛。每頭小母牛從第四個年頭開始,每年年初也生一頭小母牛。請程式設計實現在第n年的時候,共有多少頭母牛?
Input
輸入資料由多個測試例項組成,每個測試例項佔一行,包括一個整數n(0<n<55),n的含義如題目中描述。
n=0表示輸入資料的結束,不做處理。
Output
對於每個測試例項,輸出在第n年的時候母牛的數量。
每個輸出佔一行。
Sample Input
2 4 5 0
Sample Output
2 4 6
題目分析:這道題相信很多人都會感到眼熟,是不是感覺跟斐波那契數列相似,有了這個方向就可以很自然的想到這道題應該是使用遞推來完成
現在分析規律,對於遞推提,先把前幾項列出來不失為一種好方法
f1=1 f2=2;f3=3,f4=4,f5=6,f7=9.......
想必大家也已經看出這道題的規律,就是在fx,x<4時,fx=x,x>=4時,fx=f(x-1)+f(x-3);
那麼思路就很明顯了,只不過是採用函式儲存然後查詢還是直接現用現遞推,這裡給出函式儲存的程式碼
#include<iostream>
#include<cstdio>
#include<map>
using namespace std;
long long f[60]={0,1,2,3};
map<int,long long >cow;
int main()
{
cow[1]=1;
cow[2]=2;
cow[3]=3;
for(int i=4;i<60;i++)
{
f[i]=f[i-3]+f[i-1];
cow[i]=f[i];
}
int n;
while(scanf("%d",&n)&&n)
{
cout<<cow[n]<<endl;
}
return 0;
}
遞推的程式碼
#include<iostream>
#include<cstdio>
using namespace std;
long long f(long long n)
{
if(n==1) return 1;
if(n==2) return 2;
if(n==3) return 3;
if(n>3)
{
return f(n-1)+f(n-3);
}
}
int main()
{
ios::sync_with_stdio(false);
int n;
while(scanf("%d",&n)&&n)
{
long long ans=0;
ans=f(n);
cout<<ans<<endl;
}
return 0;
}
相關文章
- 杭電2046
- 杭電oj 2020
- 杭電No2000
- 『杭電1810』Rating of Tetris
- 『杭電1940』ICPC Scoreboard
- 『杭電1939』He is offside!IDE
- 『杭電1937』Finding Seats
- 杭電hdu2072
- 杭電2048(遞推)
- (杭電1406)完數
- 杭電多校補題
- 『杭電1848』Fibonacci again and againAI
- (補題 杭電 1008)Elevator
- 杭電OJ 2066 一個人的旅行
- 民工哥的十年故事:杭漂十年,今撤霸都!
- 2024杭電多校第9場
- 2024杭電多校第九場
- 2024杭電多校第8場
- 杭電OJ 2048 完全錯排的可能性
- 2024杭電多校覆盤 (1~5)
- 杭電OJ 2032楊輝三角
- 杭電OJ1040解題報告
- C語言訓練之杭電OJC語言
- 杭電OJ 2028求n個數的最小公倍數
- (杭電1019 最小公倍數) Least Common MultipleAST
- 針對OJ的JAVA 輸入(PAT,牛客網,杭電 etc)Java
- 杭電多校第10場 6887 Task Scheduler(DP)
- [P2402] 奶牛隱藏
- 杭州哪裡有開票-杭州開票
- AI發來賀電,您的2333號奶牛已進入戀愛時節 | 野性的呼喚AI
- 杭州開票
- 從賣電腦到做遊戲:Falcom 的起家故事遊戲
- 杭電OJ2029迴文串——Palindromes _easy version(C語言解析)C語言
- 在 Linux 命令列上擁有一頭奶牛Linux命令列
- 2018杭電暑假多校知識點總結(附大一結語)
- 揭祕電子遊戲背後音效製作的故事遊戲
- Hadoop的故事Hadoop
- 我的故事