题解 | #统计每个月兔子的总数#
统计每个月兔子的总数
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;
}