递归求解母牛生小牛问题
来源:互联网 发布:淘宝退款介入在哪里 编辑:程序博客网 时间:2024/05/19 03:19
题目来源:http://www.programfan.com/acm/show.asp?qid=7#comment
http://acm.tongji.edu.cn/showproblem.php?problem_id=1005
母牛生小牛
Problem
设有一头小母牛,从出生第四年起每年生一头小母牛,按此规律,第N年时有几头母牛?
Input
本题有多组数据。每组数据只有一个整数N,独占一行。(1≤N≤50)
Output
对每组数据,输出一个整数(独占一行)表示第N年时母牛的数量
Sample Input
1
4
5
20
Sample Output
1
2
3
872
设有一头小母牛,从出生第四年起每年生一头小母牛,按此规律,第N年时有几头母牛?
Input
本题有多组数据。每组数据只有一个整数N,独占一行。(1≤N≤50)
Output
对每组数据,输出一个整数(独占一行)表示第N年时母牛的数量
Sample Input
1
4
5
20
Sample Output
1
2
3
872
核心算法:// func(year-3) 是老母牛1头 因为前三年只有1头母牛 func(year-1)第二代牛数量没1年产1头
return (func(year-3)+func(year-1));
return (func(year-3)+func(year-1));
解题思路:
//第一代永远都是1个
//第二代从第4年开始,每年加一个
//第三代从第7年开始,由上一代个数决定 每个产一个
//第四代从第10年开始 由上一代个数决定 每个产一个
//问题的实质是:从新牛出生起就开始了同一个问题 原问题的第1年就是新牛出生的那一年
代码如下:
#include "stdafx.h"#include<iostream>#include<fstream>using namespace std; int a[100]={0,1}; //a[i]村第i代的数量 a[0]总数量 //问题的实质是:从新牛出生起就开始了同一个问题 原问题的第1年就是新牛出生的那一年 int func(int year){ if(year<4) //只有1头牛时 头三年只有原本的母牛1头 { return 1;} else { // func(year-3) 是老母牛1头 因为前三年只有1头母牛 func(year-1)第二代牛数量没1年产1头 return (func(year-3)+func(year-1)); }}int main(int argc, char* argv[]){ ifstream in("a.txt"); int n; while(in>>n) { cout<< func(n)<<endl; } return 0;}
- 递归求解母牛生小牛问题
- 母牛生小牛问题
- 母牛生小牛的问题
- 母牛生小牛
- 母牛生小牛
- 母牛生小牛
- 母牛生小牛二
- 母牛生小牛
- 1227 -- 母牛生小牛
- 母牛生小牛
- 母牛生小牛
- 母牛生小牛
- 母牛生小牛 oj131
- 母牛生小牛
- 利用面向对象解母牛生小牛问题
- 用对象的思想递归求解《母牛的故事》问题
- 【小题目】母牛产小牛问题
- 面向对象的“母牛生小牛”
- 最小公倍数求解猪的安家
- android 禁止EditText自动弹出键盘!!
- 九度OJ 教程35 排序二叉树的建立与遍历。
- 《持续交付》笔记——第3章 持续集成
- category尝试
- 递归求解母牛生小牛问题
- MFC中ListBox控件的使用
- 开机速度优化-ODEX化
- C++下遍历文件夹
- (总结)Nginx配置文件nginx.conf中文详解
- RDLC报表中使用自定义函数
- iOS面向过程,面向对象一则实例
- 安装Oracle RAC时, 碰到到了PRKC-1002错误
- 从源码角度 解析 String StringBuffer 和 StringBuild的区别