c++问题 请帮忙看看有错误吗!牛的繁殖

jimwalker 2009-04-02 12:59:15
题目是这样的,牛的繁殖,有头母牛,它每年年初生意头小母牛;每头母牛从第四年年头起,每年年初也生意头小母牛,按此规律,若无死牛,第20年头共有多少头母女?


int main(int argc, char* argv[])
{
int n = 1;
int sum = 0;
cout<<"Enter the year "<<endl;
cin>>n;
int a[4]={0,0,0,1};
int a_0,a_1,a_2,a_3;
for(int i =1;i <= n;i++)
{
a_0 = a[0]; a_1 = a[1]; a_2 = a[2]; a_3 = a[3];
a[0] = a[3];
a[1] = a_0;
a[2] = a_1;
a[3] += a_2;
}
for(int j = 0;j < 4;j++)
{
sum += a[j];
}
cout<<sum<<endl;
return 0;
}
...全文
122 11 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
jimwalker 2009-04-02
  • 打赏
  • 举报
回复
多谢各位
lpf000 2009-04-02
  • 打赏
  • 举报
回复
完整的:
#include<iostream>
using namespace std;

int main()
{
int cows(int);
int a=4,b=2;
int n,sum=0,i;
cout<<"enter the years:"<<endl;
cin>>n;
if(n<4)
{
cout<<"the number of the cows is"<<n+1<<endl;
return 0;
}
sum=cows(n);
//sum=a;
//for(i=4;i<=n;i++)
//{
// sum+=b;
// b++;
//}
cout<<"the number of the cows is "<<sum<<endl;
return 0;
}
int cows(int years)//递归函数
{
int sum=0;
if(years==4)
return sum=6;
else
{
return sum=cows(years-1)+(years-2);
}
}
是对的了 请结贴
lpf000 2009-04-02
  • 打赏
  • 举报
回复
试试我这个 看思想对不:
#include<iostream>
using namespace std;

int main()
{
int a=4,b=2;
int n,sum=0,i;
cout<<"enter the years:"<<endl;
cin>>n;
if(n<4)
{
cout<<"the number of the cows is"<<sum+n<<endl;
return 0;
}
sum=a;
for(i=4;i<=n;i++)
{
sum+=b;
b++;
}
cout<<"the number of the cows is "<<sum<<endl;
return 0;
}
lpf000 2009-04-02
  • 打赏
  • 举报
回复
1
2 3 4
6 9 13
18 24 31
39 48 58
yinlijun610 2009-04-02
  • 打赏
  • 举报
回复
第N年的牛数= (n-1)的牛+(n-2)
rabbitjerry 2009-04-02
  • 打赏
  • 举报
回复
方法1
递归

方法2
建一个二维数组a[20][4]
a[j]的4个数依次表示第j年年龄大于等于4岁的、3岁的、2岁的、1岁的母牛。
因此a[j+1]年有:
a[j+1][0] = a[j][0]+a[j][1] 大于等于四岁的牛是上年大于等于4岁的牛加上上年3岁的牛的个数。
a[j+1][1] = a[j][2]
a[j+1][2] = a[j][3]
a[j+1][3] = a[j][0]
用for循环就可以搞定。但因为这个迭代需要的数字较多,所以你得先知道前4年的数组的值。之后的就可以迭代计算了。
T技术沙龙 2009-04-02
  • 打赏
  • 举报
回复
#include"iostream"
using namespace std;

int main()
{
long n,i,a=1,b=0,c=0,d=0,sum=0;
while(true)
{
cout<<"Enter the year:";
cin>>n;
if(n<=0)
{
cout<<"you are willing to quit."<<endl;
break;
}
for(i=1;i<=n;i++)
{
d=c+d;
c=b;
b=a;
a=d;
sum=a+b+c+d;
}
cout<<"the number of cow is "<<sum<<endl;
}
return 0;
}

这个代码可以满足楼主的要求
qzl123666 2009-04-02
  • 打赏
  • 举报
回复
不用递归也行,有如下公式,S[n]表示第n年的母牛数。
则有:
S[n]-S[n-1]=S[n-3]即第n年比第n-1年多的母牛数刚好是第n-3年的母牛数,因为此时第n-3年的母牛都刚好可以生小牛了。
剩下的楼主应该知道怎么做了
mengde007 2009-04-02
  • 打赏
  • 举报
回复
楼主递归吧
  • 打赏
  • 举报
回复
用递归做多省事,兔子问题
leewon1988 2009-04-02
  • 打赏
  • 举报
回复
e

65,187

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧