老牧民的遗嘱

来自计算思维百科
跳转至: 导航搜索
老牧民的遗嘱.jpg

这是一个关于如何分羊的问题。说有一个老牧民临时前留下遗言,要将自己的17只羊分给三个儿子,长子分1/2,二儿子分1/3,三儿子分1/9。并且,老人规定,羊一只也不可以宰杀。问该如何分羊,才能最大限度地遵从老人的遗愿。

解决方案

方案1---临时空间法

解决方法:我们可以把它看成是一个计算机问题:一共有17个存储空间,进程1要占用一半的存储空间,进程2用占用1/3的存储空间,进程3要占用1/9的存储空间。跟分羊一样,存储空间数目只能取整数,那么如何分配这些内存空间呢?我们可以把这三个分数加一加,1/2+1/3+1/9=17/18<1;我们只用了17个空间,所以我们可以增加一个临时空间,使得当前的空间总数为18,用完以后,再释放临时空间,这样问题得以解决;回到分羊的问题,按照以上的想法,我们可以跟邻居借一只羊,凑够18只羊,然后分羊,大儿子分得9只,二儿子分得6只,三儿子分得2只,刚好加起来等于17只,剩下一只羊还给邻居。

涉及的计算思维

看了这个问题,有人说这还不简单,煮熟了分呗。可是老人明确规定羊一只也不可以宰杀啊。看来,老人是故意而为之,看看自己的儿子是否足够聪明。每位儿子分得的羊只能是整数,17除以2、3、9都不是整数,这该如何是好?现实生活中,我们经常遇到这样的分配问题,要使得分配公平而符合要求,可以利用就程序语言的临时空间方法,它体现了一种计算思维的转化特点。