算法之谜

时间:2013-07-05 05:06:26

标签: algorithm puzzle

如何在10个盒子中分发1000美元,以便在1美元到1000美元(包括两者)之间的任何金额可以作为这些盒子的某些组合给出。

请提供有关如何处理此问题的任何提示。我试过但无法解决问题。

2 个答案:

答案 0 :(得分:3)

你曾经做过二进制到十进制转换吗?取1到1000之间的任何数字并尝试将其转换为二进制数。你会发现你正在处理2的权力。

分配2的幂,然后分配你需要的任何数量,只需将其转换为二进制并选择那些位设置为1的框。

答案 1 :(得分:2)

以基数为二的表示法写出1到1000之间的所有数字。这些数字从2^10 = 1024起需要十位。您的框最多为2^8两个,489为最后一个框(2^02^8,而489为您提供十个框和{{1}并且位表示为您提供证据,证明您可以将任意数量写入1000作为这些框的组合(显然任何高达511的任何东西都可以,对于任何大于511的东西,减去489然后请注意您可以写其余为8个盒子的组合,因为它保证小于或等于511)。