hdu2160 母猪的故事 题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2160
递推水
题目大意:母猪生崽,出生后第二天中午和第三天中午各生一崽,生完第二崽立刻杀掉。求n天后有多少只猪(所有的生杀操作都发生在中午,所有的统计操作都发生在晚上)。
题目分析:生完第二胎后杀掉,在数量上是-1同时+1,我们可以认为这时没有发生变化。那么这么一只猪,在所有的奇数天或偶数天生一只或不做变化。如果这只猪是奇数天出生的那么它只在偶数天生小猪。可以设两个变量a,b分别代表奇/偶数天出生的猪的数量,a在偶数天时为b贡献a;b在奇数天时为a贡献b。程序代码如下:
#include<stdio.h>
#include<string.h>
int main()
{
int t,a,b,n,i;
scanf("%d",&t);
while(t--)
{
a=1,b=0;
scanf("%d",&n);
for(i=2;i<=n;i++)
{
if(i%2)a+=b;
else b+=a;
}
printf("%d\n",a+b);
}
return 0;
}
PS:上网一查才发现这原来是个缺第一项的斐波那契数列,不过可能只是一个规律,怎么用它解释就不得而知了。