DESCROPTION:
第一年,有一头牛成牛,每一年生一头小母牛,但是小母牛要在第四年才能长成 成牛,问第n年 一共有几头牛;
第一年有一头,第二年有两头,第三年 有四头,第四年 有四头,第五年 有6头 。
数组a[i] 代表 第 i 年的 总的牛数
总结 第 i 年 的 牛数 是 i-1 的牛的 个数 加上 i-3 年前 牛的总个数 (因为 i-3)年的 所有的牛 在 第 i年都是 成 牛了。
code:
#if 1
#include<bits/stdc++.h>
using namespace std;
int main()
{
int n;
cin>>n;
int a[55];
while(n!=0)
{
int i;
a[1]=1;
a[2]=2;
a[3]=3;
#include<bits/stdc++.h>
using namespace std;
int main()
{
int n;
cin>>n;
int a[55];
while(n!=0)
{
int i;
a[1]=1;
a[2]=2;
a[3]=3;
for(i=4;i<=n;i++)
{
a[i]=a[i-1]+a[i-3];
}
cout<<a[n]<<endl;
cin>>n;
}
{
a[i]=a[i-1]+a[i-3];
}
cout<<a[n]<<endl;
cin>>n;
}
}
#endif
尤其注意的是 罗列前三年的牛的个数,以及循环 开始的 年数 是从 i+3 开始的。
养兔子问题:
description:
第一年有一对兔子,第二年生下一对兔子,生下来的小兔子,要等一年 才能生育,且每一对兔子只能生一对,问 第 n年 有多少对兔子?(数据类型可以用64位整数:long long)
这个问题和 牛的 问题类似 ,第 i年的 兔子 的数量 等于 i-1年 兔子的数量 加上 i-2年兔子的 数量 (因为 在 第i-2 年所有的兔子在第 i年都可以生育)
#if 0
#include<iostream>
using namespace std;
#include<iostream>
using namespace std;
int main()
{
long long int a[100];
int n;
while(cin>>n&&n!=0)
{
a[1]=1;
a[2]=2;
for(int i=3;i<=n;i++)
a[i]=a[i-1]+a[i-2];
cout<<a[n]<<endl;
}
return 0;
}
{
long long int a[100];
int n;
while(cin>>n&&n!=0)
{
a[1]=1;
a[2]=2;
for(int i=3;i<=n;i++)
a[i]=a[i-1]+a[i-2];
cout<<a[n]<<endl;
}
return 0;
}
#endif