bluess


私信TA

用户名:bluess

访问量:2725

签 名:

等  级
排  名 24168
经  验 622
参赛次数 0
文章发表 3
年  龄 0
在职情况 学生
学  校 东莞理工学院
专  业

  自我简介:


解题思路:由题目给出的样例输入和输出结果可知,第二年仅有两只母牛,即原始母牛第二年年初才生第一只小母牛(不知道为什么,但既然题目这么说就强行说它是),鉴于第一年没有生产不利于结构计算,所以可设sum=0(无中生有),因为题目中原始母牛只有一个,所有设开始生产量plus=1可以理解plus为今年可以生产的母牛的数量),再用一个for循环满足i(现在年数)<n(输入年数)情况下sum+=plus,因为题目定义中新生小母牛要四年后才可以生产,那么可以设置一个数组f[]将今年新生的小母牛数量存进去,四年后再拿出来,可以设置一个指针*p指向数组p,在循环中等到i>4时,才开始plus+=*p;*p++

即解题关键在于今年新增的可以生产的母牛数量=4年前新生小母牛数,今年可以生产的总的母牛数=上一年可以生产的母牛数+今年新增的可以生产的母牛数。



注意事项:实际上第一年母牛并没有生产,所以新增小母牛是从第二年才开始有的,而我设置的数组是从i=1开始的,所以我将*p指向f[2],若设置数组从i=0开始,也可将条件改为p=&f[1],i>3。

参考代码

#include <stdio.h>
int main()
{
  int n,i,f[100],*p,plus,sum;
  while(scanf("%d",&n),n)
 {
   p=&f[2];
   plus=1;sum=0;
   for(i=1;i<=n;i++)
   {
    if(i>4)
     {
      plus=plus+*p;
      *p++;
     }
      sum+=plus;
     f[i]=plus;
   }
 printf("%d\n",sum);
 }
return 0;
}


 

0.0分

2 人评分

  评论区

  • «
  • »