母牛的故事

来源:互联网 发布:淘宝修改折扣价权重 编辑:程序博客网 时间:2024/06/05 17:45


母牛的故事

Problem Description
有一头母牛,它每年年初生一头小母牛。每头小母牛从第四个年头开始,每年年初也生一头小母牛。请编程实现在第n年的时候,共有多少头母牛?
 
Input
输入数据由多个测试实例组成,每个测试实例占一行,包括一个整数n(0<n<55),n的含义如题目中描述。
n=0表示输入数据的结束,不做处理。
 
Output
对于每个测试实例,输出在第n年的时候母牛的数量。
每个输出占一行。
 
Sample Input
2450
 
Sample Output
246
代码:
#include <stdio.h>int main(){    int n,i;    int f[60];    while(scanf("%d",&n)&&n!=0){        f[1]=1;f[2]=2;f[3]=3;        if(n==1)        printf("%d\n",f[1]);        else if(n==2)        printf("%d\n",f[2]);        else if(n==3)        printf("%d\n",f[3]);        else{        for(i=4;i<=n;i++)            f[i]=f[i-1]+f[i-3];        printf("%d\n",f[n]);        }    }    return 0;}
注:此题的关键是构造递推式。第n年的猪f[n]由两部分组成,一部分是前一年的猪f[n-1],另一部分是第n年刚生出来的猪,因为第n年的有生育力的猪一定是第n-3年前的猪,因为第n-1,n-2出生的猪是还没有生育能力的,因此可以构造递推式F[n]=F[n-1]+F[n-3];这里n显然大于等于4,而当n小于4的时候,根据题意直接给出答案,并作为递推初值。呵呵,这题确实有点难度,不过做过一遍,以后就可以举一反三了!




























0 0
原创粉丝点击