小牛生产小牛的问题解决集粹
一只刚出生的小牛,4年后生一只小牛,以后每年生一只。现有一只刚出生的小牛,问N年后共有牛多少只?
1.原始笨方法
{
//初始化为1头牛
int count = 1;
if (years < 4)
{
return count;
}
while (years - 3 > 0)
{
count = count + Comput(years - 3);
years--;
}
return count;
}
特点:容易理解,不过效率太低.不具有实用价值.
2.采用HashTable优化方案
public long Compute(int years)
{
//初始化为1头牛
long count = 1;
if (years <= 3)
{
return count;
}
int i = 4;
while (i <= years)
{
int subYears = i - 3;
if (table.ContainsKey(subYears))
{
count = (long)table[subYears];
}
else
{
count += Compute((int)(subYears));
}
if (!table.ContainsKey(subYears))
{
table.Add(subYears, count);
}
i++;
}
return (long)count;
}
特点:在第一种方案的基础上性能有了大幅度的提高.采用HashTable存储老牛的生育曲线,从而达到以后的小牛重复利用老牛的生育曲线.(直接取其生产数量)
3.采用数组的方式描述
{
int[] age = new int[4] { 1, 0, 0, 0 };
for (int i = 2; i <= years; i++)
{
age[3] += age[2]; age[2] = age[1];
age[1] = age[0];
age[0] = age[3];
}
return (age[0] + age[1] + age[2] + age[3]);
}
特点:只采用一个循环搞定,效率极高.
3.采用优化递归公式实现
f(n) = f(n-1)+f(n-3) [n > 3]
f(n) = 1 [0 < n <= 3]
{
if (x < 4) return 1;
else return Comput(x - 1) + Comput(x - 3);
}
特点:代码简洁,功能简单实现,但使用递归当然会牺牲一定的效率作为代价.
前些天在网络上偶然发现的生产小牛问题.于是搜集整理了一下,方便大家共同研究学习使用.
有好的算法大家共同研究^_^
转载于:https://www.cnblogs.com/symbol441/archive/2008/02/19/1073291.html
小牛生产小牛的问题解决集粹相关推荐
- (山理工 1243)母牛问题(大牛生小牛,小牛生。。。。)
问题描述 有一对夫妇买了一头母牛,它从第2年起每年年初生一头小母牛.每头小母牛从第四个年头开始,每年年初也生一头小母牛.请编程实现在第n年的时候,共有多少头母牛? 输入 输入数据由多个测试实例组成,每 ...
- C语言 母牛生小牛问题 多组测试数据
题目描述: 有一头母牛,它每年年初生一头小母牛.每头小母牛从第四个年头开始,每年年初也生一头小母牛.请编程实现在第n年的时候,共有多少头母牛? 输入: 输入数据由多个测试实例组成,每个测试实例占一行, ...
- 一头小牛,小牛成长到第四年开始,会每年生一头小牛,N年后共有多少头牛
方法一:面向对象 public class Cow {/* * 一个农夫,买了一头小牛,这头小牛成长到第四年开始,会每年生一头小牛,* 所出生的小牛成长到第四年开始,也会每年生一头小牛,请问N年后,农 ...
- 小牛电动的软文列表,和实际用户的反馈实在是天上地下。。
2019独角兽企业重金招聘Python工程师标准>>> 搜狐汽车: <个人电动交通工具通勤日记-小牛 N1 电动踏板车> http://auto.sohu.com/201 ...
- 一个农场有头母牛,现在母牛才一岁,要到四岁才能生小牛,四岁之后,每年生一头小牛,n年后有多少头小牛
1 题目描述 一个农场有头母牛,现在母牛才一岁,要到四岁才能生小牛,四岁之后,每年生一头小牛. 假设每次生的都是母牛,并且也遵守4年才生育并生母牛的原则.且所生的牛都不会死 问20年之后共有多少头牛 ...
- 母牛2年生小牛 5年后并死去的算法
同事提出一个问题,关于牛生小牛的算法,之前的牛生小牛的算法都是假设牛不死的情况下的,几年生一头,若干年后还有多少头,这个算法是有些变化的. 农场第一年有一头牛,假设这头牛每2年生一次小牛,小牛迅速长大 ...
- 两轮电自2.0时代开启 小牛电动以独立主见创造新物种
在越来越多消费者追求个性化和多元化的今天,什么样的两轮电自才有可能成为热销爆品?作为全球领先的智能城市出行解决方案提供商,小牛电动针对这个问题给出了自己的答案. 8月2日,小牛电动正式发布全场景跨界机 ...
- 一份来自大厂算法工程师的求职宝典
作者 | 我生有涯愿无尽 来源 | 海边的拾遗者(ID:gh_cdf18657e25d) 转眼在京东已经入职大约两个星期了,但找工作的时光仿佛就在昨日.盲目投简历,疯狂做笔试,流水般面试的日子.秋招是 ...
- 最小可行产品是什么_无论如何,“最小可行产品”到底意味着什么?
最小可行产品是什么 by Ravi Vadrevu 通过拉维·瓦德雷武(Ravi Vadrevu) 无论如何,"最小可行产品"实际上是什么意思? (What does " ...
最新文章
- 大数据统计分析毕业设计_基于大数据分析的电子信息类专业毕业设计成绩影响因素研究...
- 手写自己的MyBatis框架-V2.0参数处理
- HDU - 4569 Special equations(同余模定理)
- bat 批处理获取时间语法格式
- 利用Excel导入数据到SAP C4C
- html控制浏览器宽度和高度,html – 设置电子邮件和浏览器的tr和td宽度和高度
- 从L1 loss到EIoU loss,目标检测边框回归的损失函数一览
- C语言和设计模式(观察者模式)
- 在anaconda python开发套件下进行opencv的安装
- 通过ssh访问git项目
- 修改Chrome的User Agent的方法 真实有效
- ActiveMQ的下载安装与操作示例
- 安装ps提示重新启动计算机,安装Service Pack或执行DCPROMO后,出现错误或服务器重新启动 - Product Support Quick Note (PSQN) - 276184...
- 解决Postman报错Could not send request
- HTTP 出现304情况及详解
- 北京政协委员共商提高城市精治、共治、法治水平
- POJ 3322 BFS
- 计算机网络原理第七章——Internet 原理
- linux类似的vlookup函数,VLOOKUP函数的使用方法介绍 VLOOKUP函数的操作实例
- linux下载安装tree命令
热门文章
- 数字图像处理:(4)二阶微分在数字图像处理中的应用
- 力扣(LeetCode)刷题,简单题(第16期)
- Mat矩阵基本操作与示例 OpenCV
- 单文件浏览器_图文并茂深度解析浏览器渲染原理,包看懂超值得收藏
- PCL_common模块api代码解析
- 剑指offer:面试题35. 复杂链表的复制
- Udacity机器人软件工程师课程笔记(一)-样本搜索和找回-基于漫游者号模拟器
- Angualr设置自定义管道Pipe(类似Vue的过滤器filters)货币格式化(实现内置管道CurrencyPipe的功能)
- 连接远程服务器CredSSP加密Oracle修正报错解决办法
- 在CentOS 6.6 64bit上安装Oracle VirtualBox 5.0.12