題目鏈接:http://acm.hdu.edu.cn/showproblem.php?pid=2018
代碼:
#include<stdio.h>
int main(){
? ? int n;
? ? while(scanf("%d",&n)!=EOF && n){
? ? ? ? int k=1,num,c[100]={0},i;
? ? ? ? c[0]=1;
? ? ? ? c[1]=2;
? ? ? ? c[2]=3;
? ? ? ? c[3]=4;
? ? ? ? if(n==1) num=1;
? ? ? ? else if(n==2) num=2;
? ? ? ? else if(n==3) num=3;
? ? ? ? else if(n==4) num=4;
? ? ? ? else{
? ? ? ? ? ? for(i=4;i<n;i++){
? ? ? ? ? ? ? ? c[i]=c[i-1]+c[i-3];
? ? ? ? ? ? ? ? num=c[i];
? ? ? ? ? ? }
? ? ? ? }
? ? ? ? printf("%d\n",num);
? ? }
}
這道題困擾了我很久链峭,暴力將牛存在數(shù)組之中弊仪,每到3歲就開始生励饵,但這樣子卻產(chǎn)生了不同牛占了同一個(gè)地方滑燃,甚至有些牛一年瘋長了2歲,這種方法失敗了典予,又去找其他的方法。直接將牛的數(shù)量確定瘤袖,那么牛三歲了就數(shù)量+1唄昂验。可是判斷牛是不是三歲占婉,又再次進(jìn)入了上面我并不會的循環(huán)之中。后來實(shí)在搞不定就找逆济,找百度奖慌,找成功的,終于找到了一個(gè)簡單的—>找規(guī)律升薯,發(fā)現(xiàn)在第四年之后击困,每一年都會有上一年和前三年的牛加起來剛好就是這一年的牛,于是便有了上面的這一段代碼蛛枚。
感謝cxq2016的這一篇文章脸哀。