牛的繁殖问题
解题思路:
能够繁殖的牛,全部放在整数M中。
刚刚繁殖下来的牛放在r[0]中,
生长了一个月的牛放在r[1]中,
生长了两个月的牛放在r[2]中,
生长了三个月的牛放在r[3]中,
后面直接用递归来处理。
#include<iostream>
using namespace std;
void sum(int M,int r[],int now,int P,int &result){
int t;//M为能够繁殖的牛 ,now为现在的时间
t=r[3];//P为需要求的年数,result数组存储每行的结果
r[3]=r[2];//r[3]存储生长了3个月的牛个数
r[2]=r[1];//r[2]存储生长了2个月的牛个数
r[1]=r[0];//r[1]存储生长了1个月的牛个数
M+=t;//上一个月的r[3],现在能够繁殖了,加进原来的M中
r[0]=M;//r[0]存储刚刚出生的牛个数
result=M+r[0]+r[1]+r[2]+r[3];
if(now!=P)
{
++now;
sum(M,r,now,P,result);
}
}
int main(){
int N,M,P,r[4],now,result[500];
cin>>N;
for(int i=0;i<N;i++)
{
now=1;
for(int j=0;j<4;j++)//数组初始化
r[j]=0;
cin>>M>>P;
sum(M,r,now,P,result[i]);
}
for(int i=0;i<N;i++)
cout<<result[i]<<endl;
return 0;
}
代码的运行图:
上面是自己写的代码,如有错误,欢迎大家指出!