关于c++中的一个母牛生小牛的问题详细解答与体会

来源:互联网 发布:淘宝网大童夏装 编辑:程序博客网 时间:2024/05/21 06:00

近来我们这些刚学c++的菜鸟不太懂得母牛生小牛的问题,我查了查,最后有简明表达了自己的两句理解性语言,希望和我一样的同学们能过更好的理解……

#include   <iostream>  
  using   namespace   std;  
   
  void   main()  
  {  
      int   n;  
      long   a=1,   b=1,   c=1,   temp;  
      cout   <<"please   input   a   value:/n";  
      cin   >>n;  
   
      for(int   i=4;   i<=n;   i++){  
          temp=a+c;   a=b;   b=c;   c=temp;  
      }  
      cout   <<   c   <<endl;  
  }                                                                                        先建立数学模型吧。第1年,2年,3年,4……的牛数目分别为:  
  1   1   1   2   3   4   6   9   13   19.....  
   
 
可以看出从第四年开始后,第i年的牛数。a[i]=a[i-1]+a[i-3]  
  int   a[100];  
          int   n;  
          a[1]=1;  
          a[2]=1;  
          a[3]=1;  
          cout   <<"please   input   a   value:/n";  
          cin   >>n;  
          for(int   i=4;i<=n;i++)  
          {  
                  a[i]=a[i-1]+a[i-3];  
          }  
          cout<<a[n]<<endl;  
  }  
 
可能比较好理解吧,不过用到了数组。。。。。。相比之下,效率就没有楼主贴出的高了  
 
楼主贴出中的  
  temp=a+c;   a=b;   b=c;   c=temp;  
 
就拿i=6来说吧  
  i=3
的时候a=1;b=1;c=1  
  i=4
的时候temple=1+1;a=b=1;b=c=1;c=temple=2;  
  i=5
的时候temple=2+1;a=b=1;b=c=2;c=temple=3;  
  i=6
的时候temple=3+1;a=b=2;b=c=3;c=temple=4;  
 
可以看出计算第i年的是时候,temple=a+c。这个时候,c的值是i-1年的c值,而a呢,是i-3年的c.  
 

其中a,b,c,依次向前推得,就像滚雪球那样,随着年份的增加他也要变化,这就是a=b,b=c,c=temp的意思了。