有一种兔子,从出生后第3个月起每个月都生一只兔子,小兔子长到第三个月后每个月又生一只兔子。
例子:假设一只兔子第3个月出生,那么它第5个月开始会每个月生一只兔子。
一月的时候有一只兔子,假如兔子都不死,问第n个月的兔子总数为多少?
数据范围:输入满足
#include <stdio.h> int main() { int new_habbit = 0; int one_habbit = 0; int old_habbit = 1; int month = 0; scanf("%d",&month); if(month < 3) { printf("%d",1); return 1; } int k = 3; while(k <= month) { old_habbit += one_habbit; one_habbit = new_habbit; new_habbit = old_habbit; k++; } printf("%d",new_habbit+one_habbit+old_habbit); return 0; }
#include <stdio.h> int main() { int mon[3] = {1}; char month, i; scanf("%d", &month); for(i = 1; i < month; i++) { mon[2] += mon[1]; // 能生育兔子 mon[1] = mon[0]; // 发育中的兔子 mon[0] = mon[2]; // 新生的兔子 } printf("%d", mon[0] + mon[1] + mon[2]); }
#include <stdio.h> int fib(int n){ if(n<3){ return 1; } else{ return fib(n-1)+fib(n-2); } } int main(){ int n; scanf("%d",&n); printf("%d",fib(n)); }
#include <stdio.h> int a[32]; int rb(int n){ if(n<3){ return 1; } else{ if(a[n]==0){ a[n]=rb(n-1)+rb(n-2); } return a[n]; } } int main(){ int n; scanf("%d",&n); printf("%d",rb(n)); }
#include <stdio.h> int rb(int n){ if(n<3){ return 1; } int dp[n+1]; dp[1]=dp[2]=1; for(int i=3;i<n+1;i++){ dp[i]=dp[i-1]+dp[i-2]; } return dp[n]; } int main(){ int n; scanf("%d",&n); printf("%d",rb(n)); }
#include <stdio.h> int rb(int n){ if(n<3){ return 1; } int a,b,c;a=b=1; for(int i=3;i<n+1;i++){ c=a+b;a=b;b=c; } return c; } int main(){ int n; scanf("%d",&n); printf("%d",rb(n)); }
#include<stdio.h> int count(int n) { if(n==1||n==2) return 1; else return count(n-1)+count(n-2); } int main() { int num,res; while(scanf("%d",&num)!=EOF) { res = count(num); printf("%d\n",res); } }
实际为斐波那契数列 #include<stdio.h> int main(){ int month; while(scanf("%d", &month) != EOF){ int chusheng[month],chengzhang[month],chengnian[month],num; chengnian[0] = 1; chengzhang[0] = 0; chusheng[0] = 0; if(month >= 2){ chengnian[1] = 1; chengzhang[1] = 0; chusheng[1] = 0; } for(int date = 2; date < month; date++){ chengnian[date] = chengnian[date-1] + chengzhang[date -1]; chengzhang[date] = chusheng[date -1]; chusheng[date] = chengnian[date]; } num = chusheng[month -1] + chengzhang[month -1] + chengnian[month -1]; printf("%d\n", num); } }