一道杭电的ACM 题 求助
这是一道ACM 的题目http://acm.hdu.edu.cn/showproblem.php?pid=2018 可以进取查看原题 名为母牛的故事
有一头母牛,它每年年初生一头小母牛。每头小母牛从第四个年头开始,每年年初也生一头小母牛。请编程实现在第n年的时候,共有多少头母牛?
有一头母牛,它每年年初生一头小母牛。每头小母牛从第四个年头开始,每年年初也生一头小母牛。请编程实现在第n年的时候,共有多少头母牛?
#include <stdio.h>
#include <stdlib.h>
#include<math.h>
#include<conio.h>
int main()
{
int n,i = 0,count = 0,t = 0;
int *num;//每年出生的牛数
int *sum;//每年末的总数
int year[100] = {2,4,5,6,7};
/* do
{
scanf("%d",&year[i]);
if(year[i] ==0)
break;
if(i < year[i])
n = year[i];
}while(1); */
n = 5;//用来测试 的
num = (int*)calloc(n,sizeof(int));
sum = (int*)calloc(n,sizeof(int));
//num[0] = 0;
num[0] = 1;//0 此时即为母牛
//count += n;//母牛所生的牛 再加上自己
for(i = 1; i < n; i ++)
{
if(i > 3)
{
t = i -3;
while(t>=0)
{
num[i] += num[t--] ;
}
}
else
num[i] = 1;
}
//计算每年年末的奶牛数 从题意好像第N 年 算出的是第 N-1年末的数目 第n年 中 n-3(包含) 年之前出生的牛 都可以在这一年生出小牛
for(i = 1; i < n ; i ++)
{
t = i ;
if(t-3>0)
sum[i] = sum[t-3]*4 + num[i] +num[i-1] + num[i-2] ;
else
while(t >=0)
sum[i] += num[t --];
}
for(i = 0; year[i]; i ++)
printf("%d\n",sum[year[i]-1]);
getch();
return 0;
}
...全文


