标题:请高手帮助列一个解题公式
只看楼主
sunyh1999
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:14
帖 子:1178
专家分:3032
注 册:2009-5-17
结帖率:79.37%
已结贴  问题点数:6 回复次数:10 
请高手帮助列一个解题公式
有一头母牛,从出生的第四年起,在每年年初生一头小母牛,每头小母牛从第4年起,每年年初也生出一头小母牛。问从第一头母牛生第一头小母牛算起,到第20年时,牛的头数共有多少(假定每头母牛都恰好存活15年)
我的算法是:
我还写了一个算法,但是老师说我错了
#include<stdio.h>
main()
{
    int i;
    int n;//年数
    int num;//牛的数目
    //type[0]表示刚出生的牛,type[1]表示出生后第二年的牛,type[2]表示出生后第三年的牛,type[3]表示已经开始生产的牛
    int type[4]={1,0,0,0};//定义如上
    printf("请输入年数:\n");//打印:请输入年数
    scanf("%d",&n);//用户输入数据
    for (i=1;i<n;i++)//根据用户所输入的数开始循环
    {   type[3]+=type[2];
        type[2]=type[1];
        type[1]=type[0];
        type[0]=type[3];
    }
    num=type[0]+type[1]+type[2]+type[3];//将牛的只数全部加起来
    printf("牛的总数为:%d\n",num);//打印num,也就是说牛的总数
    return 0;
}
可是老师说我没有写完全,母牛15年寿命的限制没有在程序中体现出来,我实在想不出如何体现15年寿命的算法,请高手指教。

[ 本帖最后由 sunyh1999 于 2010-7-3 17:06 编辑 ]
搜索更多相关主题的帖子: 公式 解题 
2010-07-03 13:53
ljwei
Rank: 3Rank: 3
等 级:论坛游侠
威 望:1
帖 子:46
专家分:192
注 册:2009-9-18
得分:0 
菜鸟路过
2010-07-03 14:04
sunyh1999
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:14
帖 子:1178
专家分:3032
注 册:2009-5-17
得分:0 
我的算法是这样的
#include <stdio.h>
int main()
{
int a=2,b=3,c=4,d;
for (int i=4;i<=20;++i )
{
d=a+c;
a=b;
b=c;
c=d;
printf( "到第%d年时总共有%d头牛\n",i, d );
}
}

欢迎来到我的博客:http://blog..cn/noisunyuhong
2010-07-03 14:14
sunyh1999
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:14
帖 子:1178
专家分:3032
注 册:2009-5-17
得分:0 
我还写了一个算法,但是老师说我错了
#include<stdio.h>
main()
{
    int i;
    int n;//年数
    int num;//牛的数目
    //type[0]表示刚出生的牛,type[1]表示出生后第二年的牛,type[2]表示出生后第三年的牛,type[3]表示已经开始生产的牛
    int type[4]={1,0,0,0};//定义如上
    printf("请输入年数:\n");//打印:请输入年数
    scanf("%d",&n);//用户输入数据
    for (i=1;i<n;i++)//根据用户所输入的数开始循环
    {   type[3]+=type[2];
        type[2]=type[1];
        type[1]=type[0];
        type[0]=type[3];
    }
    num=type[0]+type[1]+type[2]+type[3];//将牛的只数全部加起来
    printf("牛的总数为:%d\n",num);//打印num,也就是说牛的总数
    return 0;
}

欢迎来到我的博客:http://blog..cn/noisunyuhong
2010-07-03 17:04
suntea
Rank: 2
等 级:论坛游民
帖 子:59
专家分:88
注 册:2010-6-24
得分:0 
很经典的一个问题,,,

只能google一下 来找算法了..

[ 本帖最后由 suntea 于 2010-7-3 19:33 编辑 ]
2010-07-03 18:28
xiaweiqiang
Rank: 2
等 级:论坛游民
帖 子:27
专家分:82
注 册:2010-7-1
得分:2 
#include "stdio.h"

 int main()
  {int i,year,f[4]={1,1,1,1};
   printf("请输入年份:");
   scanf("%d",&year);
   for(i=1;(i<=year)&&(i<4);i++)
    printf("第%d年有%d头牛.\n",i,f[i]);
   for(i=4;i<=year;i++)
    { f[(i+3)%4]=f[i%4]+f[(i+2)%4];
      printf("第%d年有%d头牛.\n",i,f[(i+3)%4]);
     }
   return 0;
   }
2010-07-03 20:17
xiaweiqiang
Rank: 2
等 级:论坛游民
帖 子:27
专家分:82
注 册:2010-7-1
得分:0 
main()
  {int i,year,f,f1,f2,f3;
   printf("请输入年份:");
   scanf("%d",&year);
  for(i=1;i<=year;i++)
   { if(i<4)
       f=f1=f2=f3=1;
    else
      { f=f1+f3;
    f1=f2;
    f2=f3;
    f3=f;
      }
        printf("第%d年有%d头牛.\n",i,f);
      }
   }


这样也可以得到你要的结果  是N年的  你把    N改成 20 就成了
2010-07-03 20:18
方廷
Rank: 3Rank: 3
等 级:论坛游侠
威 望:1
帖 子:47
专家分:176
注 册:2010-6-9
得分:3 
//我可没搞清楚这些牛在第十五年不能生小牛;
//下面的程序是这些牛在第十五年没有生小牛;
#include<stdio.h>
void main()
{
    int a[15];//代表不同年龄牛的数量;
    int n;//年数;
    int sum=0;//牛的总数;
    for(int i=0;i<15;i++)
        a[i]=0;
    a[2]=1;
    printf("请输入年份:");
    scanf("%d",&n);
    for(i=0;i<n;i++)
    {
        for(int j=14;j>0;j--)
            a[j]=a[j-1];
        a[0]=0;
        for(j=3;j<15;j++)
            a[0]+=a[j];
    }
    for(i=0;i<14;i++)
        sum+=a[i];
    printf("牛的总数为:%d\n",sum);
}
2010-07-03 23:19
sunyh1999
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:14
帖 子:1178
专家分:3032
注 册:2009-5-17
得分:0 
可是各位高手没有体现出牛的15年寿命啊

欢迎来到我的博客:http://blog..cn/noisunyuhong
2010-07-04 08:43
方廷
Rank: 3Rank: 3
等 级:论坛游侠
威 望:1
帖 子:47
专家分:176
注 册:2010-6-9
得分:1 
for(int j=14;j>0;j--)
            a[j]=a[j-1];//这里就可以看出,15年以后的牛都没有加上去
2010-07-04 09:32



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-312012-1-1.html




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

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