| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 12764 人关注过本帖, 1 人收藏
标题:若一头小母牛,从出生起第四个年头开始每年生一头母牛,按此规律,第n年时有 ...
只看楼主 加入收藏
waterstar
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:小飞侠
威 望:5
帖 子:984
专家分:2810
注 册:2010-2-12
收藏
得分:3 
这是一道ACM题吧,我记得做过,公式确实是a[i] = a[i - 1] + a[i - 3],如果要求的数据不多,可以弄个数组把所有的数都算出来

冰冻三尺,非一日之寒;士别三日,不足刮目相看!
2011-11-07 21:31
yl291145401
Rank: 1
等 级:新手上路
帖 子:10
专家分:0
注 册:2011-10-31
收藏
得分:0 
这道题 经过各位大哥和我跟同学的讨论已经成功的求出来了
2011-11-09 00:22
abin019
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2013-5-14
收藏
得分:0 
我只粗略看了一下,本来也是做不出来才上网搜答案的,但是发现网上说迭代的感觉大部分都不对啊。
我感觉这道题不是大家说的那种迭代,大家仔细画个每年的牛的头数表格就可以看出来。

【分析】
   我看网上都是用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 编辑 ]
2013-05-14 17:26
快速回复:若一头小母牛,从出生起第四个年头开始每年生一头母牛,按此规律,第n ...
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.015439 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved