题解 | #统计每个月兔子的总数#

统计每个月兔子的总数

https://www.nowcoder.com/practice/1221ec77125d4370833fd3ad5ba72395

#include <stdio.h>

/*
1 1 1,0,0
2 1 0,1,0
3 1+1 1,0,1
4 (1+1)+1 1,1,1 
5 (1+1+1)+(1+1) 2,1,2
6 3,2,3
*/

/*
思路1:状态法;出生的每只兔子有三个状态,第一个月,第二个月,第三个月及以后,建立一个数组arr[3],每到一个新月arr[2]+=arr[1]; arr[1]=arr[0]; arr[0]=原arr[2]+arr[1]; 
//似乎是两种状态第一个月(这个月不生),第二个月(这个月不生),第三个月(这个月生)
arr[0]
*/


int CalRubbitSum(int n)
{
    int rabb[3]={1,0,0};
    for(int i=1;i<=n-1;i++)//i<=n-1,因为i进去,出来的就是i+1月的结果
    {
        //int prev_rabb2=rabb[2]+rabb[1];//上个月是第二个月的这个月也可以生了
        rabb[2]+=rabb[1];
        rabb[1]=rabb[0];
        rabb[0]=rabb[2];
    }
    return rabb[0]+rabb[1]+rabb[2];
}

int main()
{
    int n=6;
    scanf("%d",&n);
    printf("%d",CalRubbitSum(n));
    return 0;
}

全部评论

相关推荐

点赞 收藏 评论
分享
牛客网
牛客企业服务