钱能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 on 2007-04-12 15:35 毁于随 阅读(110) 评论(2)  编辑 收藏 所属分类: 杂七杂八

  回复  引用  查看    
2007-04-12 16:31 | 毁于随      
和作者聊了一会终于想明白了作者的思路.
作者的思路是让今年的总量=去年的总量+4年以前的总量.因为4年以前的总量,到今年应该就是新生牛的数量.在程序循环中分别记录了3年前,2年前,当次循环年的数量,以便下次循环时使用.
我给这个算法的定义是"倒着记",而我的思路是"正着记",且我当前的所有编程思路都是"正着记".差距还是大呀!!!
  回复  引用    
2007-10-26 09:01 | 享受人生11 [未注册用户]
猪的个数F(N)是N的函数,可以定义为:
F(N)=([(N-3)+(N%4+1)]*N/4)/2 (if N>3)
F(N)=1 (if N<=3)

标题  
姓名  
主页
Email (博主才能看到) 
验证码 *  看不清,换一张 [登录][注册]
内容(请不要发表任何与政治相关的内容)  
  登录  使用高级评论  新用户注册  返回页首  恢复上次提交      
该文被作者在 2007-04-12 15:55 编辑过


相关链接: