您的位置:首页 > 其它

(hdu step 3.1.3)母牛的故事(简单递推)

2015-02-05 12:44 399 查看
在写题解之前给自己打一下广告哈~

。。抱歉了,希望大家多多支持我在CSDN的视频课程,地址如下:http://edu.csdn.net/course/detail/209
题目:

母牛的故事

Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)
Total Submission(s): 659 Accepted Submission(s): 481
 
[align=left]Problem Description[/align]有一头母牛,它每年年初生一头小母牛。每头小母牛从第四个年头开始,每年年初也生一头小母牛。请编程实现在第n年的时候,共有多少头母牛? 
[align=left]Input[/align]输入数据由多个测试实例组成,每个测试实例占一行,包括一个整数n(0<n<55),n的含义如题目中描述。
n=0表示输入数据的结束,不做处理。 
[align=left]Output[/align]对于每个测试实例,输出在第n年的时候母牛的数量。
每个输出占一行。 
[align=left]Sample Input[/align]
2
4
5
0
 
[align=left]Sample Output[/align]
2
4
6
 
[align=left]Author[/align]lcy 
[align=left]Source[/align]C语言程序设计练习(三) 
[align=left]Recommend[/align]lcy
题目分析:              简单递推。dp
表示第n年的奶牛的个数.第n年的奶牛的个数等于(第n-1年奶牛的个数)加上(第n年新增的奶牛的个数),其中第n年新增的奶牛的个数等于第n-3年那些奶牛的个数(因为第n-3年的奶牛到第n年恰好可以生产了)...
代码如下:/*
* c.cpp
*
* Created on: 2015年2月5日
* Author: Administrator
*/

#include <iostream>
#include <cstdio>

using namespace std;

const int maxn = 56;
long long dp[maxn];

void prepare(){
dp[1]=1;//第一年只有一头奶牛
dp[2]=2;
dp[3]=3;
dp[4]=4;

int i;
for(i = 5 ; i < maxn ; ++i){
/**
* 第n年奶牛的个数=第n-1年奶牛的个数+第n年新增的奶牛的个数(第n-3年奶牛的个数)
*/
dp[i] = dp[i-1] + dp[i-3];
}
}

int main(){
prepare();

int n;
while(scanf("%d",&n)!=EOF,n){
printf("%lld\n",dp
);
}

return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: