86 母牛的數量
作者: xxx時間限制: 1S章節: 一維數組
問題描述 :
有一頭母牛,它每年年初生一頭小母牛。每頭小母牛從第四個年頭開始,每年年初也生一頭小母牛。請編程實現在第n年的時候,共有多少頭母牛?說明:假設在第n年及之前所有牛都不曾死亡。
輸入說明 :
首先輸入一個T,表示以下包含T行輸入數據(測試實例),每行包括一個整數n(0<n<55),n的含義如題目中描述。
輸出說明 :
對於每個測試實例,輸出在第n年的時候母牛的數量。
每個輸出佔一行,行首與行尾均無空格,最後無空行。
輸入範例 :
3
1
30
53
輸出範例 :
1
85626
563332848
筆記
這是一個很經典的老題。若干年前,我初次邂逅這題時,我還不會做。
解這題需要簡單的分析:每年的總牛數=上一年的牛的頭數+新生牛的頭數,本年的生育牛的頭數等於三年前牛的頭數。
設第i年的牛的總數爲yi,則
當i = 1時,y1 = 1
當1<i<4時,yi = y(i-1) + 1
當i>=4時,yi = y(i-1) + y(i-3)
代碼
#include<stdio.h>
#include<string.h>
int main(){
int T;
scanf("%d",&T);
int n;
int sum;
int cow[56];
int i,j;
while(T){
scanf("%d",&n);
cow[1] = 1;
sum = 0;
for(i=2;i<=n;i++){
if(i<4) cow[i] = cow[i-1] + 1;
else cow[i] = cow[i-1] + cow[i-3];
}
printf("%d\n",cow[n]);
T--;
}
return 0;
}