困扰我一个下午的编程题!

钱能C++教程4.10课后习题:
题目为:编程求解问题.若一头小母牛,从出生起第四个年头开始每年生一头母牛,按此规律,第N年有多少头母牛?
找到有人做出来了:
4.10这题相对初学者还是有一定的难度,初学者应该好好体会一下
/*算法:用fnum,snum,tnum,sum分别表示每四年中的第一年,第二年,第三年,
第四年(也就是总数)的母牛数目,则每过一年sum=fnum+tnum(也就是去年的总数sum加上今年新生的,而今年新生的则是第一年时的母牛数目),fnum=snum,snum=tnum,tnum=sum,
说明:一般应该采用数组表示,但因为在书出这题时还没有讲解数组,因此没有用数组表示
*/
#include<iostream>
using namespace std;
void main()
{
    int fnum=1,snum=1,tnum=1,sum=1,n;
    cout<<"第";
    cin>>n;
    cout<<"年";

    for(int i=4;i<=n;i++)
    {
        sum=fnum+tnum;
        fnum=snum;
        snum=tnum;
        tnum=sum;
    }
    cout<<"母牛的数目是:"<<sum<<endl;
}
看样子还挺简单的.可是还是反应不过来.唉.笨死了我.

理清了思路,想出来一个算法.但明显思路和作者的相比相差太多.我基础太差.唉
void total2()
{
    
//a,b,c,d分别为处于第1,2,3,4(4年以上的)的牛的数目
    int a=1,b=0,c=0,d=1,sum=0,n;
    cout
<<"";
    cin
>>n;
    cout
<<"";
    
for(int i=4;i<=n;i++)
    
{
        a
=d;            //第一年的等于4年以上的牛的数目
        d+=c;            //第四年的在原来的基础上+第三年的
        c=b;            //第三年的等于第二年的数目
        b=a;            //第二年的等于第一年的数目
        a=0;            //第一年数目为0
    }

    sum
=a+b+c+d;
    cout
<<"母牛的数目是:"<<sum<<endl;
}
posted @ 2007-04-12 15:35  吴东雷  阅读(523)  评论(2)    收藏  举报