基本动态规划问题之母牛问题

原创 2018年04月17日 09:38:08

问题描述:

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

输入:

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

n=0表示输入数据的结束,不做处理。

输出:

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

每个输出占一行。

示例输入:

2

4

5

0

示例输出:

2

4

6


问题分析:

先写几个看看

年数123456
母牛数量123469

则第i年的母牛数量cows(i)等于上一年的母牛数量cows(i-1)+新出生的母牛数量cows(i-3),即3年前的母牛数,现在可以都生意头小母牛。

代码:

package dynamicProgramming;

import java.util.Scanner;

public class Cow {
	
	public static int cows(int year) {
		switch(year) {
		case 1:  
			return 1; 
		case 2:
			return 2;
		case 3:
			return 3;
		default:
			return cows(year-1) + cows(year-3);		
		}
	}
	
	
	public static void main(String[] args) {
		int[] years = new int[32];//储存输入年数
		int count = 0;
		Scanner in = new Scanner(System.in);
        int m = in.nextInt();
        do {
        	years[++count] = m;
        	m = in.nextInt();
        }while(m !=0);
        int i = 1;
        while(i<=count) {
        	System.out.println(cows(years[i++]));
        }
        
		
	}

}



问题来源:

http://acm.hdu.edu.cn/showproblem.php?pid=2018


相似问题:

蜜蜂爬蜂房问题

有一只经过训练的蜜蜂只能爬向右侧相邻的蜂房,不能反向爬行。请编程计算蜜蜂从蜂房a爬到蜂房b的可能路线数。

其中,蜂房的结构如下所示。


输入描述:

输入数据的第一行是一个整数N,表示测试实例的个数,然后是N 行数据,每行包含两个整数a和b(0<a<b<50)。

输出描述:

对于每个测试实例,请输出蜜蜂从蜂房a爬到蜂房b的可能路线数,每个实例的输出占一行。

示例输入:

2

1 2

3 6

示例输出:

1

3

问题分析:

假设开始于1,则爬到2只有1->2一条路径;1->3有1->3和1->2->3两条路径;1->4相当于先爬到2/3,再由2/3爬到4共三条路径。

故对于1——>i的可能路径数f(i)=f(i-1)+f(i-2),其中i>2;f(0)=0;f(1)=1;f(2)=2。

另,从a->b等效于1->1+b-a。



超级楼梯

到第i层楼梯f(i)的路径可以分为从第i-1层楼梯上一步到第i层楼梯(其中到第i-1层楼梯有f(i-1)中路径)或者从第i-2层楼梯跳到第i层楼梯(其中到第i-2层楼梯有f(i-2)中路径),故f(i)=f(i-1)+f(i-2),i>2.f(1)=1,f(2)=2;

平面分割

4.8.一些杂散但值得讨论的问题

本课程零散讲了一些C语言中值得讨论的知识点。譬如main函数的传参和返回值、void类型、NULL宏定义、debug调试宏等。目的是进一步提升大家对C语言的理解深度,提升大家的实战编程能力。
  • 2015年10月22日 10:32

动态规划-母牛的故事

Problem Description 有一头母牛,它每年年初生一头小母牛。每头小母牛从第四个年头开始,每年年初也生一头小母牛。请编程实现在第n年的时候,共有多少头母牛? Input ...
  • shenggeliang
  • shenggeliang
  • 2016-05-05 10:43:00
  • 342

hdu 2018 母牛的故事(动态规划)

母牛的故事 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Su...
  • accelerator_2016
  • accelerator_2016
  • 2016-05-19 15:24:00
  • 318

c++:母牛生小母牛问题 (类方法)

  • 2009年01月17日 18:03
  • 3KB
  • 下载

c++:母牛生小母牛问题(递归)

  • 2009年01月17日 18:02
  • 1KB
  • 下载

编程求解母牛问题---凌风

 若一头母牛,从出生起第四个年头开始每年生一头母牛,按此规律,第n年时有多少头母牛?...
  • dragon_horse
  • dragon_horse
  • 2009-11-05 08:38:00
  • 1085

C语言关于母牛问题的计算代码

  • 2012年04月05日 00:29
  • 416B
  • 下载

hdu2018 母牛的故事 (动态规划)

母牛的故事 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Su...
  • yuyanggo
  • yuyanggo
  • 2015-11-01 16:12:09
  • 409

母牛问题

Problem Description 有一头母牛,它每年年初生一头小母牛。每头小母牛从第四个年头开始,每年年初也生一头小母牛。请编程实现在第n年的时候,共有多少头母牛?   Input ...
  • qust_waiwai
  • qust_waiwai
  • 2014-01-22 00:30:39
  • 527

学习笔记20170312——JAVA解决农场母牛生baby的问题

第一次在CSDN博客上写东西,希望日积月累,终得收获。 问题: 农场一头小母牛, 母牛每年生母牛。 母牛5岁产母牛, 20年后多少牛? PS:在这里有个前提就是,第一头母牛已经>=5岁啦~ 思...
  • ac2017foryourself
  • ac2017foryourself
  • 2017-03-12 13:29:52
  • 174
收藏助手
不良信息举报
您举报文章:基本动态规划问题之母牛问题
举报原因:
原因补充:

(最多只允许输入30个字)