母牛受惊成斗牛初次生小牛不知道顺利不

母牛生小牛
设有一头小母牛,从出生第四年起每年生一头小母牛,按此规律,第N年时有几头母牛?
本题有多组数据。每组数据只有一个整数N,独占一行。(1≤N≤50)
对每组数据,输出一个整数(独占一行)表示第N年时母牛的数量
Sample Input
Sample Output
评论人: jiuwing&&发布时间:
#include&&iostream&
using&namespace&
int&main()
&&&&int&num[10000];&&&&
&&&&num[0]=0;
&&&&num[1]=1;
&&&&num[2]=1;
&&&&num[3]=1;
&&&&//num[4]=1;
&&&&int&i=0;&
&&&&cout&&"请输入所需要计算的年数:"&&
&&&&while(cin&&years)
&&&&&&&&&&&&for(int&i=4;i&=i++)
&&&&&&&&&&&&{
&&&&&&&&&&&&&&&&num[i]=num[i-3]+num[i-1];
&&&&&&&&&&&&&&&&
&&&&&&&&&&&&}
&&&&&&&&&&&&cout&&"此时母牛的数量是:"&&num[i-1]&&
&&&&return&0;
评论人: smallhippo&&发布时间:
我不是电脑,我是人脑!=&=~
int&main()
&&&&int&infancy=1,year=1,adult=0,count=1,n1=1,n2=0,n3=0;
&&&&while(cin&&year)
&&&&&&&&for(;count&=++count)
&&&&&&&&&&&&if(count&4)
&&&&&&&&&&&&&&&&
&&&&&&&&&&&&adult+=n1;
&&&&&&&&&&&&n1=n2;
&&&&&&&&&&&&n2=n3;
&&&&&&&&&&&&n3=
&&&&&&&&}&&&&
&&&&&&&&infancy=n1+n2+n3;
&&&&&&&&cout&&infancy+adult&&
&&&&return&0;
评论人: xyzw7777&&发布时间:
#include&iostream&
using&namespace&
int&cattle(int&ct,int&n)
&&&&if(n&4)
&&&&&&&&return&
&&&&&&&&return&cattle(ct,n-1)+cattle(ct,n-3);
void&main()
&&&&cout&&"The&number&of&cattle&is:";
&&&&cout&&"The&day&is:";
&&&&cout&&"The&number&of&cattle&is:"&&cattle(nm,day)&&
评论人: xuesut&&发布时间:
用递归算法很简单,而且在n小于20时时间感觉不是很大,但是当n=50时,时间就很长了,用非递归算法,无论是20还是50,时间上几乎没有区别。
#include&&stdio.h&
int&cow(int&n)
&&&&int&a[2][4]={0},i;
&&&&a[0][0]=1;
&&&&if(n&4)&return(1);
&&&&for(i=1;i&n;i++)
&&&&&&&&a[1][0]=a[0][3]+a[0][2];//1y小牛
&&&&&&&&a[1][1]=a[0][0];//2y小牛
&&&&&&&&a[1][2]=a[0][1];//3y小牛
&&&&&&&&a[1][3]=a[0][3]+a[0][2];//4y及以上大牛
&&&&&&&&//更新数据
&&&&&&&&a[0][0]=a[1][0];
&&&&&&&&a[0][1]=a[1][1];
&&&&&&&&a[0][2]=a[1][2];
&&&&&&&&a[0][3]=a[1][3];
&&&&return(a[1][0]+a[1][1]+a[1][2]+a[1][3]);
int&main()
&&&&int&n;
&&&&for(;;)
&&&&&&&&scanf("%d",&n);
&&&&&&&&printf("牛总数%d\n",cow(n));
&&&&return(0);
评论人: lidawei&&发布时间:
#include&iostream&
#include&stdlib.h&
using&namespace&
int&main()
&&&&long&birth(int&n);
&&&&int&n;
&&&&cin&&n;
&&&&cout&&birth(n)&&
&&&&system("pause");
&&&&return&0;
long&birth(int&n)
&&&&&if(n==1&||&n==2&||&n==3)
&&&&&&&&&return&1;
&&&&&return&birth(n-1)+birth(n-3);
评论人: lidawei&&发布时间:
#include&iostream&
#include&stdlib.h&
using&namespace&
int&main()
&&&&long&birth(int&n);
&&&&int&n;
&&&&cin&&n;
&&&&cout&&birth(n)&&
&&&&system("pause");
&&&&return&0;
long&birth(int&n)
&&&&&if(n==1&||&n==2&||&n==3)
&&&&&&&&&return&1;
&&&&&return&birth(n-1)+birth(n-3);
评论人: lidawei&&发布时间:
#include&iostream&
#include&stdlib.h&
using&namespace&
int&main()
&&&&long&birth(int&n);
&&&&int&n;
&&&&cin&&n;
&&&&cout&&birth(n)&&
&&&&system("pause");
&&&&return&0;
long&birth(int&n)
&&&&&if(n==1&||&n==2&||&n==3)
&&&&&&&&&return&1;
&&&&&return&birth(n-1)+birth(n-3);
评论人: lidawei&&发布时间:
#include&iostream&
#include&stdlib.h&
using&namespace&
int&main()
&&&&long&birth(int&n);
&&&&int&n;
&&&&cin&&n;
&&&&cout&&birth(n)&&
&&&&system("pause");
&&&&return&0;
long&birth(int&n)
&&&&&if(n==1&||&n==2&||&n==3)
&&&&&&&&&return&1;
&&&&&return&birth(n-1)+birth(n-3);
评论人: lidawei&&发布时间:
#include&iostream&
#include&stdlib.h&
using&namespace&
int&main()
&&&&long&birth(int&n);
&&&&int&n;
&&&&cin&&n;
&&&&cout&&birth(n)&&
&&&&system("pause");
&&&&return&0;
long&birth(int&n)
&&&&&if(n==1&||&n==2&||&n==3)
&&&&&&&&&return&1;
&&&&&return&birth(n-1)+birth(n-3);
评论人: ltag0110rtag&&发布时间:
#include&&stdio.h&
typedef&long&double&TYPE;
TYPE&born(int&);
TYPE&a[3];
void&main()
&&&&int&i,n;
&&&&TYPE&sum=1;
&&&&printf("输入年份:&");
&&&&scanf("%d",&n);
&&&&for(i=1;i&=n;i++)
&&&&&&&&sum+=(TYPE)born(i);
&&&&&&&&printf("第&%d&年&:&%.0f\n",i,sum);
TYPE&born(int&m)
&&&&if(m&5)
&&&&&&&&if(m&4)&return&0;
&&&&&&&&else&return&a[2]=1;
&&&&&&&&return&a[(m+1)%3]+=a[m%3];
评论人: hfwf37&&发布时间:
#include&"stdio.h"
void&everybirth(int&*,int&,int&);
void&cownew(int&*,&int,&int&);
void&everybirth(int&*sum,int&year,int&n)
&&&&int&i;
&&&&for(i=i&=n;i++,year++)
&&&&&&&&(*sum)++;
&&&&&&&&cownew(sum,year,n);
void&cownew(int&*sum,int&year,int&n)
&&&&if(year+3&=n)
&&&&&&&&everybirth(sum,year+3,n);
void&main()
&&&&int&year=1,n=1;
&&&&while(n!=-1)
&&&&&&&&auto&int&sum=1;
&&&&&&&&printf("please&input&the&nth&year:");
&&&&&&&&scanf("%d",&n);
&&&&&&&&cownew(&sum,year,n);
&&&&&&&&printf("the&number&of&the&cows&is:%-7d\n",sum);
评论人: doc_peter&&发布时间:
#include&iostream.h&
int&fun(int&n)
&&&&if(n==1||n==2||n==3)
&&&&&&&&return&1;
&&&&&&&&return&fun(n-1)+fun(n-3);
void&main()
&&&&int&i;&&&&&&&//存放年份值
&&&&cout&&"请输入年份:"&&
&&&&cin&&i;
&&&&cout&&fun(i)&&
评论人: houenxun&&发布时间:
#include&&iostream&
#include&&fstream&
#define&MAX_COW_NUM&50
using&namespace&
int&CowNum1(int&year);&&//方法一
int&CowNum2(int&year);&&//方法二
int&CowNum3(int&year);&&//方法三
int&cowNum[MAX_COW_NUM]={-1};
struct&Cattle
&&&&int&oneY
&&&&int&twoY
&&&&int&threeY
&&&&int&otherY
Cattle&cattles[MAX_COW_NUM]={{-1,-1,-1,-1,-1}};
void&main()
&&&&ifstream&
&&&&in.open("data.in");
&&&&ofstream&
&&&&out.open("data.out");
&&&&int&year=0;
&&&&while(!in.eof())
&&&&&&&&in&&
&&&&&&&&cout&&CowNum3(year)&&
int&CowNum1(int&year)
&&&&if&(year&1)
&&&&&&&&return&0;
&&&&if&(year&4)
&&&&&&&&return&1;
&&&&int&sum=1;
&&&&for&(int&i=year-3;i&0;i--)
&&&&&&&&sum+=CowNum1(i);
&&&&return&
int&CowNum2(int&year)
&&&&if&(year&4)
&&&&&&&&return&1;
&&&&if&(cowNum[year-1]&0)
&&&&&&&&return&cowNum[year-1];
&&&&int&sum=1;
&&&&for&(int&i=year-3;i&0;i--)
&&&&&&&&sum+=CowNum2(i);
&&&&return&
int&CowNum3(int&year)
&&&&if&(cattles[year-1].total&0)
&&&&&&&&return&cattles[year-1].
&&&&&&&&if&(year==1)&
&&&&&&&&&&&&cattles[year-1].oneYear=1;
&&&&&&&&&&&&cattles[year-1].twoYear=0;
&&&&&&&&&&&&cattles[year-1].threeYear=0;
&&&&&&&&&&&&cattles[year-1].otherYear=0;
&&&&&&&&&&&&cattles[year-1].total=1;
&&&&&&&&else
&&&&&&&&&&&&CowNum3(year-1);
&&&&&&&&&&&&cattles[year-1].twoYear=cattles[year-2].oneY
&&&&&&&&&&&&cattles[year-1].threeYear=cattles[year-2].twoY
&&&&&&&&&&&&cattles[year-1].otherYear=cattles[year-2].otherYear+cattles[year-2].threeY
&&&&&&&&&&&&cattles[year-1].oneYear=cattles[year-1].otherY
&&&&&&&&&&&&cattles[year-1].total=cattles[year-1].oneYear+cattles[year-1].twoYear+cattles[year-1].threeYear+cattles[year-1].otherY
&&&&&&&&//cout&&year&&":"&&cattles[year-1].oneYear&&"&"&&cattles[year-1].twoYear&&"&"&&cattles[year-1].threeYear&&"&"&&cattles[year-1].otherYear&&
&&&&&&&&return&cattles[year-1].
评论人: landxiexyy&&发布时间:
就是斐波拉契数列变形吧
#include&iostream&
#include&conio.h&
using&namespace&
int&f(int);
int&main()
int&sum=0;
cout&&"input&year";
sum=f(year);
int&f(int&year)
&&&&if&(year==1)
&&&&&&&&result=1;
&&&&else&if(year==2)
&&&&&&&&result=1;
&&&&else&if(year==3)
&&&&&&&&result=1;
&&&&else&if(year&=4)
&&&&&&&&result=f(year-1)+f(year-3);
&&&&return&
评论人: songli1216&&发布时间:
初学者路过
#include&iostream.h&
void&main()
{int&i,j,a,b,n;
cout&&"请输入年份:";
while(i&=n)
if(j%4==0)
评论人: songli1216&&发布时间:
初学者路过
#include&iostream.h&
void&main()
{int&i,j,a,b,n;
cout&&"请输入年份:";
while(i&=n)
if(j%4==0)
评论人: songli1216&&发布时间:
初学者路过
#include&iostream.h&
void&main()
{int&i,j,a,b,n;
cout&&"请输入年份:";
while(i&=n)
if(j%4==0)
评论人: songli1216&&发布时间:
初学者路过
#include&iostream.h&
void&main()
{int&i,j,a,b,n;
cout&&"请输入年份:";
while(i&=n)
if(j%4==0)
评论人: songli1216&&发布时间:
初学者路过
#include&iostream.h&
void&main()
{int&i,j,a,b,n;
cout&&"请输入年份:";
while(i&=n)
if(j%4==0)
评论人: houenxun&&发布时间:
//动态规划
#include&&iostream&
#include&&fstream&
#define&MAX_COW_NUM&50
using&namespace&
//int&CowNum(int&year);
int&CowNum2(int&year);
int&cowNum[MAX_COW_NUM]={-1};
void&main()
&&&&ifstream&
&&&&in.open("data.in");
&&&&ofstream&
&&&&out.open("data.out");
&&&&int&year=0;
&&&&while(!in.eof())
&&&&&&&&in&&
&&&&&&&&out&&CowNum2(year)&&
int&CowNum2(int&year)
&&&&if&(year&4)
&&&&&&&&return&1;
&&&&if&(cowNum[year-1]&0)
&&&&&&&&return&cowNum[year-1];
&&&&int&sum=1;
&&&&for&(int&i=year-3;i&0;i--)
&&&&&&&&sum+=CowNum2(i);
&&&&return&
评论人: houenxun&&发布时间:
//递归算法
#include&&iostream&
#include&&fstream&
using&namespace&
int&CowNum(int&year);
void&main()
&&&&ifstream&
&&&&in.open("data.in");
&&&&ofstream&
&&&&out.open("data.out");
&&&&int&year=0;
&&&&while(!in.eof())
&&&&&&&&in&&
&&&&&&&&out&&CowNum(year)&&
int&CowNum(int&year)
&&&&if&(year&1)
&&&&&&&&return&0;
&&&&if&(year&4)
&&&&&&&&return&1;
&&&&int&sum=1;
&&&&for&(int&i=year-3;i&0;i--)
&&&&&&&&sum+=CowNum(i);
&&&&return&
评论人: cyl&&发布时间:
#include&stdio.h&
void&main()
&&&&int&a[50]={1,1,1},n,i;
&&&&scanf("%d",&n);
&&&&if(n&=4)
&&&&&&&&for(i=3;i&n;i++)
&&&&&&&&&&&&a[i]=a[i-1]+a[i-3];
&&&&printf("%d",a[n-1]);
评论人: tomliu05&&发布时间:
楼下的数列不对
应该是1&1&1&2&3&4&6&9&13&19&28...
规律因该是下一项等于它的前一项加上前三项的和
f(x)=f(x-1)+f(x-3)
评论人: wyl&&发布时间:
#include&stdio.h&
评论人: aihai2800&&发布时间:
#include&"stdio.h"
int&re_cow(int&year)
int&grade=0;
int&save=1;
int&sum_cow=1;
for(;save&=save++)
&&&&sum_cow=sum_cow+
&&&&if(save%3==0)
&&&&grade+=1;
&return&sum_
void&main()
int&c='a';
while(c!='q')
printf("*****************\n");
scanf("%d",&year);
printf("\nthe&sum&of&cow&&id&%d",re_cow(year));
c=getch();
在wintc&环境下编译的&发现前面那些人都是用&数组完成的&&现在想来我怎么没想到啊&
希望各位能验证这个程序的正确与否
麻烦大家啦&
评论人: aihai2800&&发布时间:
#include&"stdio.h"
int&re_cow(int&year)
int&grade=0;
int&save=1;
int&sum_cow=1;
for(;save&=save++)
&&&&sum_cow=sum_cow+
&&&&if(save%3==0)
&&&&grade+=1;
&return&sum_
void&main()
int&c='a';
while(c!='q')
printf("*****************\n");
scanf("%d",&year);
printf("\nthe&sum&of&cow&&id&%d",re_cow(year));
c=getch();
在wintc&环境下编译的&发现前面那些人都是用&数组完成的&&现在想来我怎么没想到啊&
希望各位能验证这个程序的正确与否
麻烦大家啦&
评论人: aihai2800&&发布时间:
#include&"stdio.h"
int&re_cow(int&year)
int&grade=0;
int&save=1;
int&sum_cow=1;
for(;save&=save++)
&&&&sum_cow=sum_cow+
&&&&if(save%3==0)
&&&&grade+=1;
&return&sum_
void&main()
int&c='a';
while(c!='q')
printf("*****************\n");
scanf("%d",&year);
printf("\nthe&sum&of&cow&&id&%d",re_cow(year));
c=getch();
在wintc&环境下编译的&发现前面那些人都是用&数组完成的&&现在想来我怎么没想到啊&
希望各位能验证这个程序的正确与否
麻烦大家啦&
评论人: aihai2800&&发布时间:
#include&"stdio.h"
int&re_cow(int&year)
int&grade=0;
int&save=1;
int&sum_cow=1;
for(;save&=save++)
&&&&sum_cow=sum_cow+
&&&&if(save%3==0)
&&&&grade+=1;
&return&sum_
void&main()
int&c='a';
while(c!='q')
printf("*****************\n");
scanf("%d",&year);
printf("\nthe&sum&of&cow&&id&%d",re_cow(year));
c=getch();
在wintc&环境下编译的&发现前面那些人都是用&数组完成的&&现在想来我怎么没想到啊&
希望各位能验证这个程序的正确与否
麻烦大家啦&
评论人: laixiongmei&&发布时间:
#include&iostream&
using&namespace&
int&main()
&&&&int&n,&cow[51];
&&&&cow[0]&=&0;
&&&&cow[1]&=&cow[2]&=&cow[3]&=&1;
&&&&for(int&i&=&4;&i&&&51;&i&++)
&&&&&&&&cow[i]&=&cow[i&-&1]&+&cow[i&-&3];
&&&&while(cin&&n)
&&&&&&&&cout&&cow[n]&&
&&&&return&0;
评论人: laixiongmei&&发布时间:
#include&iostream&
using&namespace&
int&main()
&&&&int&n,&cow[51];
&&&&cow[0]&=&0;
&&&&cow[1]&=&cow[2]&=&cow[3]&=&1;
&&&&for(int&i&=&4;&i&&&51;&i&++)
&&&&&&&&cow[i]&=&cow[i&-&1]&+&cow[i&-&3];
&&&&while(cin&&n)
&&&&&&&&cout&&cow[n]&&
&&&&return&0;
评论人: Hello_Arvin&&发布时间:
如果单纯用递归做的话,当N为50的时候就很费时间了,都要运行好多秒,这是一个不得了的时间.所以采取空间换时间的方法,记录下来已经计算过的数值.这样算下来,当N=100000运行的时间都比单纯的用递归N=50用的时间短.
#&include&iostream&
#&include&&vector&
#&include&&map&
using&namespace&
map&unsigned,unsigned&&
unsigned&Count(int&n)
&&&&for(int&i&=&1;i&!=&4;i++)
&&&&&&&&imap[i]&=&1;
&&&&for(int&i&=&4;i&&=&n;i++)
&&&&&&&&imap[i]&=&imap[i-1]+imap[i-3];
&&&&return&imap[n];
int&main()
&&&&int&n;
&&&&vector&int&&
&&&&while(cin&&n)
&&&&&&&&ivec.push_back(n);
&&&&vector&int&::iterator&iter&=&ivec.begin();
&&&&for(;iter&!=&ivec.end();iter++)
&&&&&&&&int&i&=&*
&&&&&&&&if(i&=1&&&&i&=10000)
&&&&&&&&&&&&cout&&Count(i)&&
评论人: &&发布时间:
#include&iostream&
using&namespace&
int&f(int&n)
&&&&if(n&=1&&n&4)
&&&&&&&&return&1;
&&&&return&f(n-1)+f(n-3);
int&main()
&&&&int&n;
&&&&while(cin&&n)
&&&&&&&&if(n&=1&&n&=50)
&&&&&&&&&&&&cout&&f(n)&&
&&&&return&0;
评论人: &&发布时间:
#include&iostream&
using&namespace&
int&f(int&n)
&&&&if(n&=1&&n&4)
&&&&&&&&return&1;
&&&&return&f(n-1)+f(n-3);
int&main()
&&&&int&n;
&&&&while(cin&&n)
&&&&&&&&if(n&=1&&n&=50)
&&&&&&&&&&&&cout&&f(n)&&
&&&&return&0;
评论人: shikang&&发布时间:
#include&stdio.h&
int&Sove&(int&year,int&limite_year,int&a1,int&a2,int&a3,int&a4)
&&&&if&(year&=limite_year)
&&&&&&&&return&(a1+a2+a3+a4);
&&&&&&&&return&Sove(year+1,limite_year,a3+a4,a1,a2,a3+a4);&&&&
int&main()
&&&&scanf("%d",&x);
&&&&printf("%d",Sove(1,x,1,0,0,0));
&&&&goto&A;
&&&&return&0;
//a1表示第一年出生的母牛数,a2表示第二年出生的母牛数,a3表示第三年出生的母牛数,a4以后每一年都可以生小母牛的母牛数。year表示计算到某一年,limite_year就是我们最终要算到的年数
评论人: xh2012&&发布时间:
#include&&iostream&
using&namespace&
double&cows(double&num)
&&&&if(num&=3)return&1;
&&&&else&return&cows(num-1)+cows(num-3);
void&main()
&&&&double&
&&&&while(cin&&year)
&&&&&cout&&cows(year)&&&&&&
评论人: five5bcahz&&发布时间:
&22:14:55
真是光说不练
评论人: kj507&&发布时间:
考虑到底归思想就可以解决此问题,&递归:F(n)=F(n-1)+F(n-3)此时正解···
评论人: &&发布时间:
我有一种简单的解法:
#include&&iostream.h&
int&liushu(int&n);
void&main()
&cout&&"shu&ru&yi&ge&lian&shu&"&&
&liushu(x);
&cout&&"di&x&lian&de&liushu&=="&&liushu(x)&&
int&liushu(int&n)
{&&if(n&4)return&1;
&&&if(n&=4&&n&7)return&n-2;
&&&if(n&=7)&{return&liushu(n-3)*2+liushu(n-4)+liushu(n-5);}
评论人: Victory001&&发布时间:
自己想有一种递归方法,与大家分享(运行没问题)
#include&&iostream&
using&namespace&
int&main&()
&&&&int&n,num=1;//num等于1,表示初始时的第一头母牛&
&&&&int&CoutOx(int);//函数声明&
&&&&cout&&"请输入年份:"&&
&&&&cin&&n;
&&&&num=num+CoutOx(n);
&&&&cout&&"第"&&n&&"年有"&&num&&"头牛!"&&&
int&CoutOx(int&N)&//
&&&&if(N&=3)&return&0;//每次递归都不计繁殖后代的第一头母牛(用Ai表示)&
&&&&else&{
&&&&&&&&&&&&int&sum=N-3;//统计Ai的孩子数&
&&&&&&&&&&&&for(int&i=0;i&N-6;i++)//此处for循环中i代表Ai的第i+1(由于下标从0开始)个孩子&
&&&&&&&&&&&&{
&&&&&&&&&&&&sum=sum+N-6-i;//统计Ai的孙子数
&&&&&&&&&&&&for(int&j=0;j&N-6-i;j++)//Ai的第i+1(由于下标从0开始)个孩子所繁殖的第j+1个孩子&
&&&&&&&&&&&&sum=sum+CoutOx(N-6-i-j);//&Ai的孙子遵循与Ai相似的规律用:CoutOx(N-6-i-j)递归。&
&&&&&&&&&&&&}
&&&&&&&&&&&&return&
&&&&&&&&&}&&&&
评论人: liophie&&发布时间:
Java版本的,没问题!
import&java.util.S
public&class&母牛生小牛&
&&&&public&static&void&main(String[]&argv)
&&&&&&&&int&count=0;
&&&&&&&&int[]&years=new&int[10];
&&&&&&&&for(int&i=0;i&10;i++)
&&&&&&&&&&&&years[i]=0;
&&&&&&&&Scanner&scanner=new&Scanner(System.in);
&&&&&&&&System.out.println("请输入几个年份,以0结尾");
&&&&&&&&do{
&&&&&&&&&&&&years[count]&=scanner.nextInt();
&&&&&&&&&&&&count++;
&&&&&&&&&&}while(years[count-1]!=0);
&&&&&&&&for(int&j=0;years[j]!=0;j++)
&&&&&&&&&&&&{
&&&&&&&&&&&&System.out.println(number(years[j]));
&&&&&&&&&&&&}
&&&&public&static&int&number(int&n)
&&&&&&&&if&(n&=3)
&&&&&&&&&&&&return&1;
&&&&&&&&else
&&&&&&&&&&&&return&(number(n-1)+number(n-3));
&&发布时间:
评论人: hazl_diego&&发布时间:
#include&&iostream&
using&namespace&
int&f(int&n)
&&&&if(n==1&||&n==2&||&n==3)&return&1;
&&&&return&f(n-1)+f(n-3);
int&main()
&&&&int&n;
&&&&cin&&n;
&&&&cout&&f(n);
&&&&return&0;
评论人: liophie&&发布时间:
我明白了,就是F(n)=F(n-1)+F(n-3)啊,挺经典得一递归嘛!
评论人: liophie&&发布时间:
import&java.util.*;
public&class&母牛生小牛&
&&&&public&static&void&main(String[]&args)
&&&&&&&&int&yearAt=0,recentNumber=0;
&&&&&&&&System.out.println("Which&year&is&it?");
&&&&&&&&Scanner&in=new&Scanner(System.in);
&&&&&&&&yearAt=in.nextInt();
&&&&&&&&recentNumber=numberAt(yearAt);
&&&&&&&&System.out.println("There&are&"+recentNumber+"&cows");
&&&&public&static&int&numberAt(int&n)
&&&&&&&&int&a=0;
&&&&&&&&if(n==1)
&&&&&&&&&&&&a=1;
&&&&&&&&else&if(n==2)
&&&&&&&&&&&&a=1;
&&&&&&&&else&if(n==3)
&&&&&&&&&&&&a=1;
&&&&&&&&else&if(n&=4)
&&&&&&&&&&&&a=2*numberAt(n-1)-numberBornAt(n-2)-numberBornAt(n-3);
&&&&&&&&else
&&&&&&&&&&&&a=0;
&&&&&&&&return&a;
&&&&public&static&int&numberBornAt(int&m)
&&&&&&&&int&b=0;
&&&&&&&&if(m==1)
&&&&&&&&&&&&b=0;
&&&&&&&&else&if(m==2)
&&&&&&&&&&&&b=0;
&&&&&&&&else&if(m==3)
&&&&&&&&&&&&b=0;
&&&&&&&&else&if(m&=4)
&&&&&&&&&&&&b=numberAt(m)-numberAt(m-1);
&&&&&&&&&&&&
&&&&&&&&return&b;
不知道为什么结果不太对,还希望哥姐多教一下。我用的是递推
评论人: computernewuser44&&发布时间:
抱歉不是我要灌水网站报错,F(11)=F(10)+F(8)=19+9=28
评论人: computernewuser44&&发布时间:
我认为和斐波那契类似母牛生小牛:F(n)=F(n-1)+F(n-3)&解释:第n年的牛等于=第n-1年的所有牛F(n-1)&+&第n年的成熟的牛新生牛F(n-3)【F(n-3)即第n-3年的所有牛无论是成熟牛还是新生牛到了第n年都成熟了都可以生,所以第n年的成熟的牛数就是F(n-3)】
例如:年:1&&&4&&&5&&&6&&&7&&&8&&&9&&&10&&11&&
&&&&牛数:&1&&&2&&&3&&&4&&&6&&&9&&&13&&19&&28
&&&&1龄牛&=1&&=1&&=1&&=1&&=2&&=3&&=4&&=6&&=9
&&&&2龄牛&=0&&=0&&=1&&=1&&=1&&=2&&=3&&=4&&=6
&&&&3龄牛&=0&&=0&&=0&&=1&&=1&&=1&&=2&&=3&&=4
&&&&4龄牛&=0&&=1&&=1&&=1&&=2&&=3&&=4&&=6&&=9
&&&&&&&&&&&&&&&递归:F(n)=F(n-1)+F(n-3)
评论人: computernewuser44&&发布时间:
&&&&&&&&&&&&&&递归:F(n)=F(n-1)+F(n-3)
评论人: computernewuser44&&发布时间:
我认为和斐波那契类似母牛生小牛:F(n)=F(n-1)+F(n-3)&解释:第n年的牛等于=第n-1年的所有牛F(n-1)&+&第n年的成熟的牛新生牛F(n-3)【F(n-3)即第n-3年的所有牛无论是成熟牛还是新生牛到了第n年都成熟了都可以生,所以第n年的成熟的牛数就是F(n-3)】
评论人: computernewuser44&&发布时间:
我认为和斐波那契类似母牛生小牛:F(n)=F(n-1)+F(n-3)&解释:第n年的牛等于=第n-1年的所有牛F(n-1)&+&第n年的成熟的牛新生牛F(n-3)【F(n-3)即第n-3年的所有牛无论是成熟牛还是新生牛到了第n年都成熟了都可以生,所以第n年的成熟的牛数就是F(n-3)】
例如:年:1&&&4&&&5&&&6&&&7&&&8&&&9&&&10&&11&&
&&&&牛数:&1&&&2&&&3&&&4&&&6&&&9&&&13&&19&&28
&&&&1龄牛&=1&&=1&&=1&&=1&&=2&&=3&&=4&&=6&&=9
&&&&2龄牛&=0&&=0&&=1&&=1&&=1&&=2&&=3&&=4&&=6
&&&&3龄牛&=0&&=0&&=0&&=1&&=1&&=1&&=2&&=3&&=4
&&&&4龄牛&=0&&=1&&=1&&=1&&=2&&=3&&=4&&=6&&=9
&&&&&&&&&&&&&&递归:F(n)=F(n-1)+F(n-3)
评论人: piaomiao163&&发布时间:
#include&&iostream&
using&namespace&
struct&Cow
class&GroupCow
&&&&GroupCow();
&&&&int&MakeCow(&int&n&);&//&&n-&[1,50]
&&&&int&numOfC
&&&&Cow&*p;&//head&pointer
&&&&Cow&*&//last&pointer
&&&&void&InsertCow();
GroupCow::GroupCow()
&&&&this-&p&=&new&C
&&&&this-&p-&age&=&1;
&&&&this-&p-&next&=&NULL;
&&&&this-&numOfCow&=&1;
&&&&this-&lastp&=&this-&p;
int&GroupCow::MakeCow(&int&n&)
&&&&Cow&*pT
&&&&pTmp&=&this-&p;
&&&&while(&n--&)
&&&&&&&&&&&&do
&&&&&&&&&&&&{
&&&&&&&&&&&&&&&&if(&pTmp-&age&&=&4&)
&&&&&&&&&&&&&&&&{
&&&&&&&&&&&&&&&&&&&&this-&InsertCow();
&&&&&&&&&&&&&&&&}
&&&&&&&&&&&&&&&&++&pTmp-&
&&&&&&&&&&&&&&&&pTmp&=&pTmp-&
&&&&&&&&&&&&}while(&pTmp&);
&&&&&&&&&&&&pTmp&=&this-&p;
&&&&return&this-&numOfC
void&GroupCow::InsertCow()
&&&&this-&lastp-&next&=&new&C
&&&&this-&lastp-&next-&age&=&1;
&&&&this-&lastp-&next-&next&=&NULL;
&&&&this-&lastp&=&this-&lastp-&
&&&&++&this-&numOfC
int&main()
&&&&int&years,&totalN
&&&&GroupCow&group1;
&&&&cout&&&&"Please&Insert&the&number&of&the&years&(Belong&to&[1,50]&)!"&&&&&
&&&&cin&&&&
&&&&totalNumber&=&group1.MakeCow(&years&);
&&&&cout&&&&"When&"&&&&years&&&&"&year&after&there&will&&have&"&&&&totalNumber&&&&"&&cow&be&born!&";
&&&&system("pause");
&&&&return&0;
评论人: &&发布时间:
//m表示成熟时间间隔,该算法使用&任何间隔&
#include&iostream&
using&namespace&
int&fun(int&n,int&m)
&&&&if(m&3&&n&=1)//表示成熟期&
&&&&return&fun(n-1,m+1);
&&&&else&if(m==3&&n&=1)//表示繁殖期&
&&&&&&&&return&fun(n-1,m)+fun(n-1,1);
&&&&return&1;//终止繁殖&
int&main()
&&&&int&n;
&&&&while(cin&&n&&n!=0)
&&&&cout&&fun(n,0)&&
&&&&system("pause");
&&&&return&0;
评论人: rangang2007&&发布时间:
出版社是&&清华大学出版社
评论人: rangang2007&&发布时间:
这个题目的算法很不是很难的!
具体的做法可以参见&数学方法论&在第15-20页之间&有个将非波拉数列的例子,可以用相同的方法来做,应为我最近在攻数学模型和数据结构的课程内容,没有去写代码,但是请各位相信,做一张2维的表,是可以做出来的!
评论人: &&发布时间:
13+8+5+3+1这个对应的数字是3&4&5&6&7的生成,还有第一只兔子生的8个没放进去
评论人: &&发布时间:
1&2&3&4&5&6&7&8&9
1&1&2&3&5&8&13&21&34
&&&&0&0&1&2&3&4&5=5
&&&&&&&&0&0&1&1&1=3(1)(再分配4)
&&&&&&&&&&&&0&0&1=1(1)&&
&&&&&&&&&&0&0&1&1=2(2)&
&&&&&&&&&&&&0&0&1=1(3)
&&&&&&&&&&&&0&0&1=1(4)
&&&&&&&&&以上分析的等于13就是第一只兔子生成的,不包括兔子本身
&&&&&&&&&发现刚好和7的兔子数列相等,以次类推:13+8+5+3+1然后再8=38
评论人: tiancai47&&发布时间:
a:array[1..50]&of&
b:array[1..50]&of&
for&i:=1&to&50&do
&&&&a[i]:=0;
for&i:=4&to&50&do
&&&&for&j:=1&to&i-3&do
&&&&&&&&a[i]:=a[i]+a[j];
for&i:=2&to&50&do
&&&&b[i]:=b[i-1]+a[i];
for&i:=1&to&50&do
&&&&write(b[i]);
&&&&write('&');
评论人: tiancai47&&发布时间:
a:array[1..50]&of&
b:array[1..50]&of&
for&i:=1&to&50&do
&&&&a[i]:=0;
for&i:=4&to&50&do
&&&&for&j:=1&to&i-3&do
&&&&&&&&a[i]:=a[i]+a[j];
for&i:=2&to&50&do
&&&&b[i]:=b[i-1]+a[i];
for&i:=1&to&50&do
&&&&write(b[i]);
&&&&write('&');
评论人: tiancai47&&发布时间:
a:array[1..50]&of&
b:array[1..50]&of&
for&i:=1&to&50&do
&&&&a[i]:=0;
for&i:=4&to&50&do
&&&&for&j:=1&to&i-3&do
&&&&&&&&a[i]:=a[i]+a[j];
for&i:=2&to&50&do
&&&&b[i]:=b[i-1]+a[i];
for&i:=1&to&50&do
&&&&write(b[i]);
&&&&write('&');
评论人: &&发布时间:
其实不对就不对了,也没什么,大不了重新写过,但可恨的是我偏偏觉得它是对的,我反复验证了好多次算法,我真的没发觉错在那儿,各位大哥大姐,在这停留几分钟,帮我看看了,&谢谢
评论人: &&发布时间:
我的不对,不过楼下好象也没对的.
要是有人能帮我看一下错在那儿,将非常感谢
评论人: &&发布时间:
#include&&stdio.h&
int&recursion(int&value,int&interval,int&x)
&&&&int&month,count,temp=0,y=0,
&&&&while(value&interval)
&&&&&&&&month=
&&&&&&&&count=0;
&&&&&&&&if(month&interval)
&&&&&&&&&&&count=x*(month-interval);
&&&&&&&&&&&month=month-
&&&&&&&&&&&if(month&interval)
&&&&&&&&&&&{
&&&&&&&&&&&&&&&count=count+recursion(month,interval,x);
&&&&&&&&&&&}
&&&&&&&&temp=temp+&;
&&&&&&&&if(y==0)
&&&&&&&&&&&y=y+1;
&&&&&&&&&&&value=value-
&&&&&&&&value--;&&&&
&&&&return&
int&main()&
&&&&int&a,e,t;&
&&&&while(1)&
&&&&&&printf("请输入需要计算的月份:");&
&&&&&&scanf("%d",&a);&
&&&&&&printf("总共是%d\n",recursion(a,2,1)+1);&
评论人: &&发布时间:
#include&&stdio.h&
int&recursion(int&value,int&interval,int&x)
&&&&int&month,count,temp=0,y=0,
&&&&while(value&interval)
&&&&&&&&month=
&&&&&&&&count=0;
&&&&&&&&if(month&interval)
&&&&&&&&&&&count=x*(month-interval);
&&&&&&&&&&&month=month-
&&&&&&&&&&&if(month&interval)
&&&&&&&&&&&{
&&&&&&&&&&&&&&&count=count+recursion(month,interval,x);
&&&&&&&&&&&}
&&&&&&&&temp=temp+&;
&&&&&&&&if(y==0)
&&&&&&&&&&&y=y+1;
&&&&&&&&&&&value=value-
&&&&&&&&value--;&&&&
&&&&return&
int&main()&
&&&&int&a,e,t;&
&&&&while(1)&
&&&&&&printf("请输入需要计算的月份:");&
&&&&&&scanf("%d",&a);&
&&&&&&printf("总共是%d\n",recursion(a,2,1)+1);&
评论人: &&发布时间:
我也写了一个,代入兔子数列发觉到9那儿就不对了。也不知道为什么不对,但我觉得思想是没问题的
#include&&stdio.h&
int&recursion(int&value,int&interval,int&x)
&&&&int&month,count,temp=0,y=0,
&&&&while(value&interval)
&&&&&&&&month=
&&&&&&&&count=0;
&&&&&&&&if(month&interval)
&&&&&&&&&&&count=x*(month-interval);
&&&&&&&&&&&month=month-
&&&&&&&&&&&if(month&interval)
&&&&&&&&&&&{
&&&&&&&&&&&&&&&count=count+recursion(month,interval,x);
&&&&&&&&&&&}
&&&&&&&&temp=temp+&;
&&&&&&&&if(y==0)
&&&&&&&&&&&y=y+1;
&&&&&&&&&&&value=value-
&&&&&&&&value--;&&&&
&&&&return&
int&main()&
&&&&int&a,e,t;&
&&&&while(1)&
&&&&&&printf("请输入需要计算的月份:");&
&&&&&&scanf("%d",&a);&
&&&&&&printf("总共是%d\n",recursion(a,2,1)+1);&
评论人: wudizhukk&&发布时间:
import&java.io.*;
public&class&Cow&{
&&public&static&void&main(String[]&args)throws&Exception&{
&&&&&&&int&n;
&&&&&&&BufferedReader&bur=new&BufferedReader(new&InputStreamReader(System.in));
&&&&&&&n=Integer.parseInt(bur.readLine());
&&&&&&&if(n&=3)
&&&&&&&&&&&&&System.out.println("1");
&&&&&&&&&&&else
&&&&&&&&&&&&&System.out.println(count(n));
&&static&&int&count(int&n){
&&&&&&&&if(n&=3)
&&&&&&&&&&&&return&1;
&&&&&&&&&&&&else
&&&&&&&&&&&&&&&&return&count(n-1)+count(n-3);
&&&&&&&&&&&&}
评论人: wudizhukk&&发布时间:
import&java.io.*;
public&class&Cow&{
&&public&static&void&main(String[]&args)throws&Exception&{
&&&&&&&int&n;
&&&&&&&BufferedReader&bur=new&BufferedReader(new&InputStreamReader(System.in));
&&&&&&&n=Integer.parseInt(bur.readLine());
&&&&&&&if(n&=3)
&&&&&&&&&&&&&System.out.println("1");
&&&&&&&&&&&else
&&&&&&&&&&&&&System.out.println(count(n));
&&static&&int&count(int&n){
&&&&&&&&if(n&=3)
&&&&&&&&&&&&return&1;
&&&&&&&&&&&&else
&&&&&&&&&&&&&&&&return&count(n-1)+count(n-3);
&&&&&&&&&&&&}
评论人: wudizhukk&&发布时间:
import&java.io.*;
public&class&Cow&{
&&public&static&void&main(String[]&args)throws&Exception&{
&&&&&&&int&n;
&&&&&&&BufferedReader&bur=new&BufferedReader(new&InputStreamReader(System.in));
&&&&&&&n=Integer.parseInt(bur.readLine());
&&&&&&&if(n&=3)
&&&&&&&&&&&&&System.out.println("1");
&&&&&&&&&&&else
&&&&&&&&&&&&&System.out.println(count(n));
&&static&&int&count(int&n){
&&&&&&&&if(n&=3)
&&&&&&&&&&&&return&1;
&&&&&&&&&&&&else
&&&&&&&&&&&&&&&&return&count(n-1)+count(n-3);
&&&&&&&&&&&&}
评论人: tangyuxuan7&&发布时间:
这是我编的,高手们看一下有什么地方有待改进
还有为什么会有那么多人编的那么复杂呢
#include&stdio.h&
#include&stdlib.h&
int&&Cow&(int&n);
int&main&(void)
&&&&int&n;
&&&&printf&("请输入一个非负整数n:");
&&&&scanf&("%d",&n);
&&&&if&(n&0)
&&&&&&&&printf&("these&is&a&wrong&number!\n");
&&&&&&&&printf("第%d年的牛的头数是%d",n,Cow(n));
&&&&system&("PAUSE");
&&&&return&0;
int&Cow&(int&n)
&&&&if&(n==1||n==2||n==3)
&&&&&&&&return&1;
&&&&&&&&&return&Cow(n-1)+Cow(n-3);
评论人: 雨雪妃妃&&发布时间:
怎么看不懂?
评论人: 神愚嘻嘻&&发布时间:
为什么你们都用c++?
评论人: 墨者是也&&发布时间:
为什么我进不了题目链接指向的网页!不知道这能不能通过!请指教(c语言)
#include&&stdio.h&
#include&&stdlib.h&
int&main()
&&&&int&a,i,F[64]={0,1,1,1,2};
&&&&for&(i=5;i&=50;i++)
&&&&&&&&F[i]=F[i-1]+F[i-3];
&&&&while&(scanf("%d",&a)==1)
&&&&&&&&if&(a&0&&a&41)
&&&&&&&&&&&&printf("%d\n",F[a]);
&&&&&&&&else&
&&&&return&0;
评论人: cpp2008&&发布时间:
c++刚学到函数,用递归的方法做了一下,请高手指点
#include&&iostream&
using&namespace&
int&f(int&n);
int&main()
&&&&int&sum,&n;
&&&cin&&n;
while(n&0&&n&=50)
&&&&&&sum=f(n)+1;
&&&&&&cout&&n;&&&
&&&&&&&&&&&&&&&&&}
&&&&&&&&&&&&&&&&&cin.get();
&&&&&&&&&&&&&&&&&cin.get();
&&&&&&return&0;
int&f(int&n)
&&&&if(n&4)
&&&total=1;
&&&&total=(n-3)f(n-3)+n-3;
&&&&return&
评论人: renjufan&&发布时间:
#include&&stdio.h&
class&matrix
&&&&long&data[3][3];
matrix&multiply(matrix&a,&matrix&b)
&&&&matrix&
&&&&for&(int&i&=&0;&i&&&3;&i++)
&&&&&&&&for&(int&j&=&0;&j&&&3;&j++)
&&&&&&&&&&&&result.data[i][j]&=&0;
&&&&for&(i&=&0;&i&&&3;&i++)
&&&&&&&&for&(int&j&=&0;&j&&&3;&j++)
&&&&&&&&&&&&for&(int&k&=&0;&k&&&3;&k++)
&&&&&&&&&&&&&&&&result.data[i][j]&+=&a.data[i][k]&*&b.data[k][j];
&&&&return&
matrix&power(matrix&a,&int&n)
&&&&matrix&
&&&&for&(int&i&=&0;&i&&&3;&i++)
&&&&&&&&for&(int&j&=&0;&j&&&3;&j++)&
&&&&&&&&&&&&if&(i&==&j)
&&&&&&&&&&&&&&&&result.data[i][j]&=&1;
&&&&&&&&&&&&else
&&&&&&&&&&&&&&&&result.data[i][j]&=&0;
&&&&matrix&power&=&a;
&&&&for&(i&=&0;&i&&=&30;&i++)
&&&&&&&&if&((n&&&(1&&&&i))&!=&0)&result&=&multiply(result,&power);
&&&&&&&&power&=&multiply(power,&power);
&&&&return&
long&cow_num(int&n)
&&&&if&(n&&=&3)&&&&return&1;
&&&&matrix&p;
&&&&p.data[0][0]&=&p.data[0][1]&=&p.data[1][2]&=&p.data[2][0]&=&1;
&&&&p.data[0][2]&=&p.data[1][0]&=&p.data[1][1]&=&p.data[2][1]&=&p.data[2][2]&=&0;
&&&&matrix&tp&=&power(p,&n&-&3);
&&&&long&result&=&tp.data[0][0]&+&tp.data[1][0]&+&tp.data[2][0];
&&&&return&
int&main()
&&&&for&(;;)
&&&&&&&&int&n;
&&&&&&&&scanf("%d",&&n);
&&&&&&&&if&(n&&=&0)&&&&
&&&&&&&&long&result&=&f(n);
&&&&&&&&printf("d\n",&result);
&&&&return&0;
评论人: renjufan&&发布时间:
看了编程之美上求菲波拉契数列的,也来试一下
&&&&&&[1,1,0]
令A&=&[0,0,1]
&&&&&&[1,0,0]
[f(4),f(3),f(2)]&=&[f(3),f(2),f(1)]&*&A
[f(n),f(n-1),f(n-2)]&=&[f(3),f(2),f(1)]*&[A^(n-3)]
令B&=&A^(n-3)
则f(n)&=&B[0][0]+B[1][0]+B[2][0]
这样复杂度好像是log2(n)的
评论人: twwwater&&发布时间:
很经典的一个东东,虽然说没有什么挑战,不过,也真的算是很经典的一种递归了........
不想写这个程序了.
评论人: google2050&&发布时间:
#include&iostream&
using&namespace&
int&main()
&&&&int&N;
&&&&cout&&&&"输入年数"&&
&&&&cin&&&N;
&&&&int&a(0),b(0),c(0),d(0);
&&&&for(int&i&=&N&-&1;&i&0&;--i)
&&&&&&&&d&=&d&+&c;
&&&&&&&&c&=&b;
&&&&&&&&b&=&a;
&&&&&&&&a&=&d;
&&&&cout&&&a&&&"&&"&&b&&"&&"&&c&&"&&"&&d&&
&&&&num&=&a+b+c+d;
&&&&cout&&&&num&&&
评论人: ruixiazi&&发布时间:
我觉得是应该用递推
递推公式:
num(n)&=&num(n-1)&+&num(n&-3);
也就是说第n年的牛的数目等于前一年的数目&加上&大前年的数目
评论人: cprime007&&发布时间:
#include&&stdio.h&
int&num(int&x)
&&&&int&m;
&&&&if(x&==&1)&m&=&1;
&&&&else&m&=&num(x&-&1)&+&x/4;&//n年的母牛数量前一年的数量加上那年的成年牛的数量
&&&&return&m;
&&&&int&n;
&&&&scanf("%d",&n);
&&&&printf("%d\n",num(n));
//实在是想不明白楼主第20年母牛的数量是872是怎么来的,如果这样的话,我都想去喂母牛
评论人: pascal玩家&&发布时间:
&&var&a,b,n,i,x,j,s,m:
&&&&&&c:array[1..10000]&of&
&&label&1;
&&&&read(n);&b:=1;
&&&&for&i:=1&to&n&do
&&&&&&begin
&&&&&&&&j:=a+b;
&&&&&&&&for&m:=1&to&j&do
&&&&&&&&&&begin
&&&&&&&&&&c[m]:=c[m]+1;
&&&&&&&&&&if&c[m]=4&then&begin&a:=a+1;&b:=b-1&
&&&&&&&&&&
&&&&&&&&b:=b+a;
&&&&writeln(a+b);
评论人: pascal玩家&&发布时间:
&&var&a,b,n,i,x,j,s,m:
&&&&&&c:array[1..10000]&of&
&&label&1;
&&&&read(n);&b:=1;
&&&&for&i:=1&to&n&do
&&&&&&begin
&&&&&&&&j:=a+b;
&&&&&&&&for&m:=1&to&j&do
&&&&&&&&&&begin
&&&&&&&&&&c[m]:=c[m]+1;
&&&&&&&&&&if&c[m]=4&then&begin&a:=a+1;&b:=b-1&
&&&&&&&&&&
&&&&&&&&b:=b+a;
&&&&writeln(a+b);
评论人: imjohnzj&&发布时间:
#include&stdio.h&
long&cow(int&n){
&&&&long&cows[4]={1,0,0,0};
&&&&for(n--;n;--n){
&&&&&&&&cows[3]+=cows[2];
&&&&&&&&cows[2]=cows[1];
&&&&&&&&cows[1]=cows[0];
&&&&&&&&cows[0]=cows[3];
&&&&return&cows[0]+cows[1]+cows[2]+cows[3];
int&main(){
&&&&int&n;
&&&&while(scanf("%d",&n)!=EOF)
&&&&&&&&{printf("%ld\n",cow(n));}
&&&&return&0;
评论人: nothing88&&发布时间:
#include&stdio.h&
int&cow(int&n)
&&&&int&i,a;
&&&&for(i=1;i&=n;i++)a+=cow(i);
&&&&return&a;
int&main()
&while(scanf("%d",&n)!=EOF)
&&&&{&printf("%d\n",cow(n));}
&&return&0;
不过如果输入过大&可能会超时&建议用一个数组存储已计算过的结果&减少递归次数
评论人: budognai&&发布时间:
//&母牛生小牛.cpp&:&Defines&the&entry&point&for&the&console&application.
#include&"stdafx.h"
#include&&iostream&
using&namespace&
//设有一头小母牛,从出生第四年起每年生一头小母牛,按此规律,第N年时有几头母牛?
struct&_cow&
&&&&int&d1,d2,d3,d4;
int&_tmain(int&argc,&_TCHAR*&argv[])
&&&&int&i;
&&&&cow[1].d1=1;
&&&&cow[1].d2=cow[1].d3=cow[1].d4=0;
&&&&for&(i=2;i&=50;i++)
&&&&&&&&int&
&&&&&&&&//int&y=(i+1)%4;
&&&&&&&&born=cow[i-1].d4+cow[i-1].d3;//born&little&cow
&&&&&&&&cow[i].d4=cow[i-1].d3+cow[i-1].d4;
&&&&&&&&cow[i].d3=cow[i-1].d2;
&&&&&&&&cow[i].d2=cow[i-1].d1;
&&&&&&&&cow[i].d1=
&&&&for&(i=1;i&50;i++)
&&&&&&&&cout&&i&&":"&&cow[i].d1&&","&&cow[i].d2&&','&&cow[i].d3&&','&&cow[i].d4&&','&&cow[i].d1+cow[i].d2+cow[i].d3+cow[i].d4&&
&&&&getchar();
&&&&return&0;
评论人: mayzhihao&&发布时间:
#include&iostream&
using&namespace&
int&doing(int&n)
&&&&if(n&4)&&return&1;
&&&&else&&return&doing(n-3)+doing(n-1);&&&&
int&main()
&&&&int&n;
&&&&while(cin&&n)&&&&&&&&&&&&&&
&&&&&&&&cout&&doing(n)&&&
&&&&system("pause");&
&&&&return&0;&&
其实就是一个公式:a[i]&=&a[i-1]+a[i-3]
评论人: ggbin&&发布时间:
这是递归:
#include&iostream&
using&namespace&
int&doing(int&n)
&&&&if(n&4)&&return&0;
&&&&else&&return&1+doing(n-3)+doing(n-1);&&&&
int&main()
while(cin&&n)&&&&&&&&&&&&&&
&&&cout&&doing(n)+1&&&
system("pause");&
return&0;&&
评论人: hustyezi&&发布时间:
#include&&stdio.h&
int&main()&{
&&&&int&n,&i;
&&&&int&a[4];
&&&&while(scanf("%d",&&n)&&&&n&!=&-1)&{
&&&&&&&&a[3]&=&1;
&&&&&&&&a[2]&=&0;
&&&&&&&&a[1]&=&0;
&&&&&&&&a[0]&=&0;
&&&&&&&&if(n&&=&4)&for(i&=&3;&i&&&n;&i++)&{
&&&&&&&&&&&&a[3]&+=&a[2];
&&&&&&&&&&&&a[2]&=&a[1];
&&&&&&&&&&&&a[1]&=&a[0];
&&&&&&&&&&&&a[0]&=&a[3];
&&&&&&&&printf("%d\n",&a[0]&+&a[1]&+&a[2]&+&a[3]);
&&&&return&1;
在这里我加了循环结束条件,即输入-1。
关键是找到运算规律就可以了。
评论人: yyf999111&&发布时间:
汗&&不是已经有人用递归写过了吗
评论人: newjunwei&&发布时间:
谁说用递归,有本事写出来瞧瞧
评论人: newjunwei&&发布时间:
非波那数列,技巧性很强
评论人: chengwh567&&发布时间:
用递归啊!!!!很快解决。只有不到十行。
评论人: zhangzhengxu&&发布时间:
我记得是牛啊,兔子是另一个问题啊
评论人: shuisou126&&发布时间:
评论人: lww013151&&发布时间:
#include&&iostream.h&
void&main&()
&&&&int&i,x,a[4]={0};
&&&&cout&&"请输入年份:"&&
&&&&cin&&x;
&&&&a[3]=1;
&&&&if(x&=3&&x&=1)
&&&&&&&&cout&&"第"&&x&&"年有1头牛!"&&
&&&&&&&&for(i=2;i&=x;i++)
&&&&&&&&&&&&a[0]=a[1];
&&&&&&&&&&&&a[1]=a[2];
&&&&&&&&&&&&a[2]=a[3];
&&&&&&&&&&&&a[3]=a[2]+a[0];
&&&&&&&&cout&&"第"&&x&&"年有"&&a[3]&&"头牛!"&&
已投稿到:
以上网友发言只代表其个人观点,不代表新浪网的观点或立场。}

我要回帖

更多关于 母牛受惊成斗牛 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信