法国数学家梅齐亚克在他著名的《数字组合游戏》(1962)中提出了一个问题:一位商人有一个重40磅的砝码,一天不小心将砝码摔成了四块。后来商人称得每块的重量都是整磅数,而且发现这四块碎片可以在天平上称1至40磅之间的任意重量。请问这四块碎片各重多少?
*问题分析与算法设计
题目中给出的条件是“在天平上”,这意味着:同一砝码既可以放在天平的左侧,也可以放在天平的右侧。若规定重物只能放在天平的左侧,则当天平平衡时有
重物重量+左侧砝码重量总和=右侧砝码重量总和
由此可得
重物重量=右侧砝码重量总和一左侧砝码重量总和
编程时只要根据以上公式,使“右侧砝码重量总和一左侧砝码重量总和”可以表示1到40之间的全部重量即可。编程中要注意的是:怎样采用一种简单的方法来表示一个砝码是在天平的左侧”,还是在“右侧”,或是根本没有使用。以下程序采用1、-1和0分别表示上述三种情况,请注意理解。
得出的结果如下图所示:
1 3 9 27