牛吃草问题的编程解决 - 以MATLAB为例
著名小学奥数题 “牛吃草问题” 曾在我小学时期留下了很深的印象:几乎所有的奥数算术题我都能看懂答案,就这个看不懂。
最近还研究行测题,行测有很多搞事的计算题,那我想直接用 MATLAB 解决牛吃草问题。
牛吃草问题是这样的:
牛顿曾编过这样一道题目(牛顿:这个我真说过。):
牧场上有一片青草,每天都生长得一样快。这片青草供给10头牛吃,可以吃22天,或者供给16头牛吃,可以吃10天,期间一直有草生长。如果供给25头牛吃,可以吃多少天?
实际上牛吃草问题是一种方程组问题,3 个方程组解 4 个未知量:
牛吃草的速度:speed_cow
草生长的速度:speed_grass
题目给出牛吃草的天数:cowday1=22、cowday2=10
题目给出多少牛:cowcount1=10、cowcount2=16
草场一开始的草量:s
题目给出多少牛:cowcount=25
题目让求的牛吃草天数:cowday
$speed_cowcowday1cowcount1=s+speed_grass*cowday1$
$speed_cowcowday2cowcount2=s+speed_grass*cowday2$
$speed_cowcowdaycowcount=s+speed_grass*cowday$
接下来只需要令speed_cow=1即可。
给到 MATLAB 实际上是方程组,所以需要整理一下成为一个标准的 $Ax=b$ 方程组。
因此 MATLAB 代码:
function cowday=niuchicao_cowday(cowcountgiven_st,cowday_st,cowcountgiven_nd,cowday_nd,cowcount) |
反过来说,对于求牛的数目也一样,给出 MATLAB 代码:
function cowcount=niuchicao_cowcount(cowcountgiven_st,cowday_st,cowcountgiven_nd,cowday_nd,cowday) |
然后运行即可。
拓展:用 Python、R 编写相关程序。
本博客所有文章除特别声明外,均采用 CC BY-NC-ND 4.0 许可协议。转载请注明来自 Accelerator086!
评论