我只粗略看了一下,本来也是做不出来才上网搜答案的,但是发现网上说迭代的感觉大部分都不对啊。
我感觉这道题不是大家说的那种迭代,大家仔细画个每年的牛的头数表格就可以看出来。
【分析】
我看网上都是用fac(n-1)+fac(n-3)来进行迭代的,也就是n年的牛数等于去年牛数+三年前的牛数,我画表格以后按这个去加,发现前几年是对的,后面就不对了。
如果我们把第一头牛叫做A,它在第1,2,3年是不生的,所以前三年牛数都是1,没有增加,即增加数为0;第四年牛A生了牛B,并且从这年开始每年都会生一头牛,而牛B在第4,5,6年也是不生的,只有牛A在生,也就是说这三年每年牛数增加量是1,第四年2头,第五年3头,第六年4头。后面就不赘述了,自己认真画个表就知道。
按照这个规律,可以得出1-3年牛数增加0;4-6年牛数增加1;7-9年牛数增加2;10-12年牛数增加3……以此类推。
所以假设年份为n,那么计算第n年牛数就应该是cow=cow+i/3,其中0<i<n-1.
【程序】
# include<stdio.h>
int main(void)
{ int n,i,cow=1;
printf("Please input the year:");
scanf("%d",&n);
if(n<0)
printf("wrong year!");
else
{ for(i=0;i<n;i++)
cow=cow+i/3;
printf("after %d years have %d cows.",n,cow);
}
return 0;
}
已经调试过,按我表格上列出的数据来验证的话是没错的...前提是我没把题目理解错= =
[
本帖最后由 abin019 于 2013-5-14 17:32 编辑 ]