努力读完小学课本才能做出来的:牛吃草算法题

TangYiMo · · 1199 次点击 · · 开始浏览    
这是一个创建于 的文章,其中的信息可能已经有所发展或是发生改变。

> 昨天去面试,做了一个算法题目,感觉比较有意思,那就记下来吧。问: > 一块草地,够18头牛吃25天,够15头牛吃31天,问:多少头牛吃草,草皮永远吃不完? ### <font color=blue>答案是9头</font>:* ### <font color=red>内心os</font>: >一开始看到这道面试题有点懵逼。这tm也能作为算法题目? 无凭无据的题目也能用来考核算法水平?(牛胃口每天都一样吗?牛不会生病不吃饭吗? 牛难道就没有权利因为失恋了而不吃饭吗?)。于是先放着,先做其它题目,回头再去看。 **<font color=green>其它题目写完后回过头来看这道题目,把现有的条件列出来先:</font>:** > 先放下成见,这道题目假设有解决,即便题目的添加给我不完善(例如没有强调牛每天的吃草量是恒定的,也没有强调草的生长速度是恒定的)。 为了给面试官一个交代,我假装这些条件都是已经被满足的条件。于是开始仔细分析题目。 *题目的隐含的条件是:牛吃草的时间是无限的,所以存量可以忽略不计,内心有个声音告诉我说:需要计算出增量与消耗量的比例是问题的关键。隐约觉得可以用减法和触发解决问题。* **<font color=green>最终问题的分析思路如下:</font>** - 假设草皮没有放牛时的重量是total斤 - 假设一头牛每天吃草的重量是x斤 - 假设草皮的生长速度是每天y斤 **<font color=green>则有以下等式成立:</font>** - 等式1 total斤 + y斤 * 20天 = 18头牛 * x斤/天 * 20天 - 等式2 total斤 + y斤 * 30天 = 15头牛 * x斤/天 * 30天 *根据加减法原则,等式两边相等,则相减也相等。* *用等式2 减去 等式1,可得等式:* > (total斤 + y斤 * 30天) - (total斤 + y斤 * 20天) = 15头牛 * x斤/天 * 30天 - 18头牛 * x斤/天 * 20天 **<font color=green>推到可得:</font>** > y斤 * 10 天 = 90头牛 * x斤 > 最终得出,y斤 = 9头牛 * x斤。 也就是草皮每天生长y斤。 9头牛刚可以吃完新生长出来的草。 牛吃草肯定不是恒定速度,草的生长速度也不是恒定的速度(阳光,空气,土壤,水分,风都是影响因素)。但是这个问题,在工业上就有可能解决实际问题。例如深圳大亚湾核电站的发电机组每天发电量,就需要类似的算法来保证安全生产。 结论:编程需要有假设,才能迸发出思想的火花。 后记:文章刚才拿给同事看,这厮说这是小学奥数的题目……。奥数果然牛。就默默翻开了小学课本,留下了悔恨的眼泪。小时候不好好学习,导致一大学生被问小学的题目……,哈哈。 ![在这里插入图片描述](https://img-blog.csdnimg.cn/20210706200237301.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2phY2t5MTI4MjU2,size_16,color_FFFFFF,t_70) ![在这里插入图片描述](https://img-blog.csdnimg.cn/20210706200325225.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2phY2t5MTI4MjU2,size_16,color_FFFFFF,t_70)

有疑问加站长微信联系(非本文作者))

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

1199 次点击  
加入收藏 微博
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传