DP 母牛的故事

2021-08-15 16:41:49 字數 1594 閱讀 3215

課程主頁在

,課程資源在

雲學堂「賀老師課堂」

同步展示,使用的帳號請到課程主頁中檢視。 

description

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

input

輸入資料由多個測試例項組成,每個測試例項佔一行,包括乙個整數n(0< n< 55),n的含義如題目中描述。

n=0表示輸入資料的結束,不做處理。

output

對於每個測試例項,輸出在第n年的時候母牛的數量。

每個輸出佔一行。

sample input24

50sample output24

6分析根據題意,先列出前幾年的牛頭數,試著找找規律:

第n年:

n=1n=2

n=3n=4

n=5n=6

n=7n=8

n=9fn頭牛?

f1=1

f2=2

f3=3

f4=4

f5=6

f6=9

f7=13

f8=19

f9=28

我們可以得出這樣乙個公式:fn=fn-1+fn-3

再理解一下,fn-1是前一年的牛,第n年仍然在,fn-3是前三年那一年的牛,但換句話說也就是第n年具有生育能力的牛,也就是第n年能生下的小牛數。

程式設計序,求解這個公式就行了。

當然,第1-3年的數目,需要直接給出。

很像斐波那契數列,有不一樣之處,道理、方法一樣。其實,在程式設計之前,講究先用這樣的方式建模。

下面給出參考程式:

[cpp]view plain

copy

//解法1:迭代解法

#include 

using

namespace

std;  

intmain()  

cout<}  

}  return

0;  

}[cpp]view plain

copy

//解法2:定義遞迴函式(效率低,不建議用)

#include 

using

namespace

std;  

intf(

intn);  

intmain()  

return

0;  

}  int

f(int

n)  

[cpp]view plain

copy

//解法3:用陣列

#include 

using

namespace

std;  

intmain()  

;  for

(i=4;i<=55;i++)  

f[i]=f[i-1]+f[i-3];  

while

(cin>>n&&n!=0)  

return

0;  

}  

母牛的故事

有一頭母牛,它每年年初生一頭小母牛。每頭小母牛從第四個年頭開始,每年年初也生一頭小母牛。請程式設計實現在第n年的時候,共有多少頭母牛?輸入資料由多個測試例項組成,每個測試例項佔一行,包括乙個整數n 0 對於每個測試例項,輸出在第n年的時候母牛的數量。每個輸出佔一行。245 0 246 include...

母牛的故事

有一頭母牛,它每年年初生一頭小母牛。每頭小母牛從第四個年頭開始,每年年初也生一頭小母牛。請程式設計實現在第n年的時候,共有多少頭母牛?輸入資料由多個測試例項組成,每個測試例項佔一行,包括乙個整數n 0對於每個測試例項,輸出在第n年的時候母牛的數量。每個輸出佔一行。245 0 2 46 lcy inc...

母牛的故事

有一頭母牛,它每年年初生一頭小母牛。每頭小母牛從第四個年頭開始,每年年初也生一頭小母牛。請程式設計實現在第n年的時候,共有多少頭母牛?輸入資料由多個測試例項組成,每個測試例項佔一行,包括乙個整數n 0對於每個測試例項,輸出在第n年的時候母牛的數量。每個輸出佔一行。245 02 46lcy c語言程式...