java 牛生小牛_例题:大牛生小牛的问题解决方法

问题:

一只刚出生的小牛,4年后生一只小牛,以后每年生一只。现有一只刚出生的小牛,问20年后共有牛多少只?

思路:

这种子生孙,孙生子,子子孙孙的问题,循环里面还有循环的嵌套循环,一看就知道是第归问题。

于是乎,第一个版本出现:

public long Compute1(uint years)

{

//初始化为1头牛

long count = 1;

if (years <= 3)

{

return count;

}

int i = 4;

while (i <= years)

{

int subYears = i - 3;

count += Compute1((uint)(subYears));

i++;

}

return (long)count;

}

可是这种循环在循环的做法可要把cpu老兄累坏了,你不信输入一个100年测试一下上面的方法,我等了半天,都没结果,改进一下吧,老牛(牛魔王)和小牛(红孩儿,奶奶的串种了),具有相同的生育能力,他们的生育曲线是一样的,所以小牛可以复用老牛的生育经验亚,这样就解决了重复计算一只牛第n年的时候一共生多少只的问题了,当年龄比较大的时候,明显大大降低cpu的运算次数,下面是基于这种思路的算法

Hashtable table = new Hashtable();

public long Compute(uint 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((uint)(subYears));

}

if (!table.ContainsKey(subYears))

{

table.Add(subYears, count);

}

i++;

}

return (long)count;

}用测试程序测试一下上面的推论吧,结果如下:

1)当输入years比较小的时候,第一种方法耗时短,但两者的时间基本在一个数量级上

2)当输入years比较大的时候,比如40以上的,第二种算法比第一种性能比在100以上,而且输入years越高,性能比越悬殊。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/521832.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Git 报错bad default revision 'HEAD'

重新提交一次记录就好了

vb 打印机 任意尺寸_创新小黑管“省心省力”惠普Laser NS 1020 智能闪充激光打印机...

对于小型公司、个人工作室或者有打印需求的家庭用户来说&#xff0c;一款优秀的轻巧、便携的打印机必不可少。前不久&#xff0c;惠普推出了全新一代惠普Laser NS 1020打印机&#xff0c;采用突破性的智能闪充碳粉技术&#xff0c;可实现15秒充粉&#xff0c;简便省时&#xff…

隐私与机器学习,二者可以兼得吗?

摘要&#xff1a; 隐私数据与机器学习看似矛盾&#xff0c;其实不然。如何有效保护机器学习训练中的隐私数据&#xff1f;谷歌专家给出了答案——PATE框架&#xff0c;就算你不太懂隐私保护的知识&#xff0c;也可以通过PATE框架来保护机器学习里的训练数据。最近关于互联网隐私…

SpringBoot 深度调优,让你的项目飞起来!

文章目录项目调优一、修改配置文件项目调优 作为一名工程师&#xff0c;项目调优这事&#xff0c;是必须得熟练掌握的事情。 在SpringBoot项目中&#xff0c;调优主要通过配置文件和配置JVM的参数的方式进行。 一、修改配置文件 关于修改配置文件application.properties。 …

青年PM倪超:想让程序员多一点点幸福感

摘要&#xff1a; 本文主人公倪超&#xff0c;在内部&#xff0c;同事都习惯叫他花名银时&#xff0c;是阿里云产品经理。前不久&#xff0c;他所负责的企业级分布式应用服务EDAS&#xff0c;荣获了公司2018财年年度最佳产品奖。在五四青年节来临之际&#xff0c;我们有幸近距离…

C语言--if...else语句【语法讲解】

一.if...else语句的介绍 if…else 语句是编程中常用的一种分支语句&#xff0c;用于根据条件执行不同的操作。 它的基本语法如下&#xff1a; if (条件表达式) {// 当条件表达式为真时执行的代码块 } else {// 当条件表达式为假时执行的代码块 } 当条件表达式为真时&#xff…

黑苹果找不到触控板_猫和老鼠手游:好友位不足却找不到人开黑?玩家给好友系统支招...

猫追鼠&#xff0c;鼠躲猫&#xff0c;欢乐互动乐逍遥&#xff0c;欢迎你来到猫和老鼠游戏学院第126期。随着开学季的到来&#xff0c;我们在游戏中会发现一个有趣的现象&#xff1a;任何时候打开自己的好友界面&#xff0c;里面都是灰色一片&#xff0c;不可否认这确实和玩家群…

java 三目算法_Java 中的三目运算符

写在前面&#xff1a;三目运算符是我们经常在代码中使用的&#xff0c;a (bnull?0:1); 这样一行代码可以代替一个 if-else&#xff0c;可以使代码变得清爽易读。但是&#xff0c;三目运算符也是有一定的语言规范的。在运用不恰当的时候会导致意想不到的问题。前段时间遇到(一个…

Serverless 的喧哗与骚动

戳蓝字“CSDN云计算”关注我们哦&#xff01;导读&#xff1a;从 2016 年 AWS 发布 Lambda 以来&#xff0c;全世界的开发者和云厂商对 Serverless 的热情在不断高涨。假设不想在开发应用程序并将其部署在服务器上的过程细节上花费精力&#xff0c;是否有一种简单的架构模型能够…

2018年最佳深度学习书单

摘要&#xff1a; AI人才缺口巨大&#xff1f;如果你想成为AI革命中的一员&#xff0c;那么你就必须要学习深度学习&#xff0c;看看这12本书&#xff0c;它们将成为你的利器&#xff01;我相信你应该知道人工智能&#xff0c;尤其是深度学习在过去5年左右取得了不错的进步。 深…

(需求实战_01)_shell脚本 ftp协议下载文件

文章目录一、需求文档说明二、脚本解释/说明三、脚本内容3.1. 案例脚本3.2. 案例脚本升级一、需求文档说明 序号要求说明①协议使用ftp协议远程下载②文件类型.zip③文件名ac_UPpp④远程下载目录用户根目录(不需要切换目录)⑤本服务器下载存放目录/blacklist/xmldata/Lists 二…

双绞线传输距离_视频监控系统中布线常用传输线缆分类及制作方法

同轴电缆&#xff1a;同轴电缆同轴电缆可分为两种基本类型&#xff0c;基带同轴电缆和宽带同轴电缆。目前基带是常用的电缆&#xff0c;其屏蔽线是用铜做成的网状的&#xff0c;特征阻抗为75(如RG-8、RG-58等)&#xff1b;宽带同轴电缆常用的电缆的屏蔽层通常是用铝冲压成的&am…

国庆出游,这个银行卡大小的充电宝一定要带

说到充电宝&#xff0c;不知道有没有人跟我有同样的烦恼&#xff1a;5000毫安容量小&#xff0c;不够用。10000毫安容量够用&#xff0c;但又大又笨重&#xff0c;拿在手里充电超累的&#xff0c;还占地方&#xff01;尤其是旅行出差的时候&#xff0c;这种体验更加明显&#x…

HBase运维基础——元数据逆向修复原理

摘要&#xff1a; 鉴于上次一篇文章——“云HBase小组成功抢救某公司自建HBase集群&#xff0c;挽救30T数据”的读者反馈&#xff0c;对HBase的逆向工程比较感兴趣&#xff0c;并咨询如何使用相应工具进行运维等等。总的来说&#xff0c;就是想更深层理解HBase运维原理&#xf…

java并发编程代码示例_java并发编程之同步器代码示例

java并发编程之同步器代码示例发布时间&#xff1a;2020-09-08 16:53:41来源&#xff1a;脚本之家阅读&#xff1a;58作者&#xff1a;Blessing_H同步器是一些使线程能够等待另一个线程的对象&#xff0c;允许它们协调动作。最常用的同步器是CountDownLatch和Semaphore&#xf…

(需求实战_02)_ftp连接下载指定.zip类型文件

文章目录一、需求文档说明二、脚本解释/说明三、脚本内容一、需求文档说明 序号要求说明①协议使用ftp协议远程下载②文件类型.zip③文件名acd_UPIDDGWL④远程下载目录APEP/⑤本服务器下载存放目录/ablacklist/xmldata/Lists/PEP 二、脚本解释/说明 脚本拆解释义说明执行命令…

50多种适合机器学习和预测应用的API,你的选择是?(2018年版本)

摘要&#xff1a; 本文盘点了2018年以来人脸和图像识别、文本分析、自然语言处理、情感分析、语言翻译、 机器学习和预测这几个领域常用的API&#xff0c;读者可以根据自己需求选择合适的API完成相应的任务。对于做工程项目和搞科研的人来说&#xff0c;有现成的模块或工具使用…

谷歌10月15日发布 Pixel 4;高通以31亿美元收购与TDK公司权益;甲骨文、VMware就云技术及支持达成协议……...

关注并标星星CSDN云计算极客头条&#xff1a;速递、最新、绝对有料。这里有企业新动、这里有业界要闻&#xff0c;打起十二分精神&#xff0c;紧跟fashion你可以的&#xff01;每周三次&#xff0c;打卡即read更快、更全了解泛云圈精彩newsgo go go 荣耀 Play 3&#xff08;图片…

天线巴伦制作和原理_10米段的春天 | 用自制环型天线+改装SDR接收器27MHz采访实录...

&#xff28;&#xff26;部分包括&#xff19;个不同的波段&#xff0c;范围从&#xff11;&#xff0e;&#xff18;&#xff2d;&#xff28;&#xff5a;到&#xff12;&#xff19;&#xff0e;&#xff17;&#xff2d;&#xff28;&#xff5a;&#xff0c;它们通常也称…

学习笔记CB012: LSTM 简单实现、完整实现、torch、小说训练word2vec lstm机器人

摘要&#xff1a; 真正掌握一种算法&#xff0c;最实际的方法&#xff0c;完全手写出来。 LSTM&#xff08;Long Short Tem Memory&#xff09;特殊递归神经网络&#xff0c;神经元保存历史记忆&#xff0c;解决自然语言处理统计方法只能考虑最近n个词语而忽略更久前词语的问题…