一只羊的故事
来源:互联网 发布:天天有喜知画心脏 编辑:程序博客网 时间:2024/04/29 00:58
今天看到了一道很有意思的题目:假如有一只羊,第3年第4年的时候,可以各生一只小羊;第5年死亡;小羊养到第3年和第4年的时候,也可以各生一只小羊,第5年死亡。问10年之后,拥有多少只小羊?
刚看到这道问题,就想到了一个方法:
<?phpfunction sheep($int, $year) { $arr = array(); for ($i=1; $i<=$int; $i++) { $arr[] = 1; } for ($j=1; $j<$year; $j++) { foreach ($arr as $k=>$v) { $arr[$k] += 1; if ($arr[$k]==3) $arr[] = 1; elseif ($arr[$k]==4) $arr[] = 1; elseif ($arr[$k]==5) unset($arr[$k]); } } return count($arr).'</br>';}?>
在现有的条件下,可以实现想要的功能。但是在年份比较多的情况下,循环次数增加,数组成员剧增,内存直接报警,50年就超过了128M内存,所以这个方法绝对是不适用的。
仔细思考了一下,羊在第5年就死亡了,也就是说只能活到四岁,那么就把同龄的羊归类到一起不就可以了,那就从一个几百万成员的大数组,变成了只有四个成员的数组。
<?phpfunction new_sheep($int, $year) { $arr = array($int,0,0,0,0); for ($i=1; $i<$year; $i++) { list($one,$two,$three,$four,$five)= $arr; $arr[0] = $two + $three; $arr[1] = $one ; $arr[2] = $two; $arr[3] = $three; } return ($arr[0]+$arr[1]+$arr[2]+$arr[3]);}?>
再测试了一下,没有内存溢出的提示了。
题目本身并不是很难的题,甚至都称不上编程的题目。但就这样的一个题目,仔细思考一下,就能把性能优化这么多。可见平时开发过程中、遇到的的功能模块,一定要多去思考解决方案、多去学习成熟的解决思路!每次完成一个功能,都要及时的进行总结,不能让自己的项目经验变成项目经历
1 0
- 一只羊的故事
- 东方故事的故事大概
- 无故事王国的故事
- 是大哥的故事的故事的故事
- 第三个的故事的故事
- 创业故事之 UMLChina的故事
- 奶奶讲的故事,呵呵,励志故事
- 读谁动了我的奶酪---故事背后的故事
- 经典数学故事 - 高斯的故事
- 故事里,读着别人的故事
- 经典励志故事2:管道的故事
- 代写品牌故事-品牌故事的结构
- 草虾的故事
- 感悟人生的故事
- 强暴背后的故事
- 苹果的故事
- 密码的故事
- 鹦鹉的故事
- 【Android】开源项目汇总-备用
- C# 删除目录下的所有文件及子文件夹
- ReactJS学习-使用webpack构建工程,使用materialUI构建前端,与hprose后端通讯
- Unable to load module "oracleasm"
- 最近用CXF webservice做了服务端
- 一只羊的故事
- 深度学习FPGA实现基础知识12(CSDN网友--深度学习总结)
- vueJs
- 数据结构课程设计(医院选址)代码
- 11 java.awt.* 包 组件
- 决策树在Kaldi中如何使用
- 树莓派-微信-网易云音乐播放器
- 2016-06-08csdn博客
- Eclipse自动补全编辑时出现闪退