华为2019秋招笔试题2

版权声明:版权声明:本文为博主原创文章,博客地址:http://blog.csdn.net/weixin_41969587,未经博主允许不得转载。 https://blog.csdn.net/weixin_41969587/article/details/82287169

牛的繁殖问题

解题思路:
能够繁殖的牛,全部放在整数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;
}

代码的运行图:
这里写图片描述

上面是自己写的代码,如有错误,欢迎大家指出!

猜你喜欢

转载自blog.csdn.net/weixin_41969587/article/details/82287169