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