首页 > 其他分享 >(hdu step 3.1.3)母牛的故事(简单递推)

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

时间:2023-05-07 22:09:56浏览次数:43  
标签:hdu int 个数 step maxn 母牛 3.1 奶牛 dp


题目:


母牛的故事

Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)

Total Submission(s): 659 Accepted Submission(s): 481

 

Problem Description


有一头母牛,它每年年初生一头小母牛。每头小母牛从第四个年头开始,每年年初也生一头小母牛。请编程实现在第n年的时候,共有多少头母牛?


 

Input


输入数据由多个测试实例组成,每个测试实例占一行,包括一个整数n(0<n<55),n的含义如题目中描述。
n=0表示输入数据的结束,不做处理。


 

Output


对于每个测试实例,输出在第n年的时候母牛的数量。
每个输出占一行。


 

Sample Input



2450



 

Sample Output



246



 

Author


lcy


 

Source


C语言程序设计练习(三)


 

Recommend


lcy



题目分析:

              简单递推。dp[n]表示第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[n]);
	}

	return 0;
}





标签:hdu,int,个数,step,maxn,母牛,3.1,奶牛,dp
From: https://blog.51cto.com/u_5290007/6252577

相关文章