标签:
题意:有种蜜蜂,每年雄蜂产一只雌蜂和雄蜂,然后死掉,雌蜂产一只雄蜂,然后死掉,现有一只不会死的雌蜂,问N年后雄蜂的个数和总蜜蜂数
思路:递推+题意
设今年雄蜂个数为m[x],去年为m[x-1],
今年雌蜂个数为f[x],去年为f[x-1]
则根据题意可得:
m[x]=f[x-1]+m[x-1];
f[x]=m[x-1]+1
ps:根据递推也可得雌蜂个数满足斐波拉切数列即:f[x]=f[x-1]+f[x-2]
代码:
1 #include <iostream> 2 #include <cstdio> 3 using namespace std; 4 long long n; 5 #define MAXN 100 6 long long f[MAXN],m[MAXN]; 7 8 bool datecin() 9 { 10 if(scanf("%lld",&n)!=EOF) 11 { 12 if(n==-1) 13 return false; 14 return true; 15 } 16 return false; 17 } 18 19 void datecal() 20 { 21 int i; 22 f[0]=1,m[0]=0,f[1]=1,m[1]=1; 23 for(i=2;i<MAXN;i++) 24 { 25 f[i]=f[i-1]+f[i-2]; 26 m[i]=m[i-1]+f[i-1]; 27 } 28 } 29 30 void showres() 31 { 32 printf("%lld %lld\n",m[n],m[n]+f[n]); 33 } 34 int main() 35 { 36 datecal(); 37 while(datecin()) 38 { 39 showres(); 40 } 41 return 0; 42 }
标签:
原文地址:http://www.cnblogs.com/byzsxloli/p/5397586.html