母牛的故事

在写题解之前给自己打一下广告哈~。。抱歉了,希望大家多多支持我在CSDN的视频课程,地址如下:

题目:

母牛的故事

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;}

她是应该难过的往回走,还是蹲下来哭泣?

母牛的故事

相关文章:

你感兴趣的文章:

标签云: