所有可能的组合

时间:2010-07-14 19:01:59

标签: algorithm

我的数学问题如下:

我有一个总容量为21000公斤的容器。 我有4项A,B,C,D。

项目A重1公斤。 B项重4公斤。 项目C重5公斤。 D项也重5公斤。

我正在寻找一种算法,它将迭代所有可能的组合,保持上述等式。例如:

{20000,0,0,200} - > 20000 * 1 + 0 * 4 + 0 * 5 + 200 * 5 = 21000公斤。

{19996,1,0,200} - > 19996 * 1 + 1 * 4 + 0 * 5 + 200 * 5 = 21000公斤。

2 个答案:

答案 0 :(得分:1)

这与SICP的“Counting Change”示例非常相似。参见:

http://mitpress.mit.edu/sicp/full-text/book/book-Z-H-11.html#%_sec_1.2.2

示例:计算更改

答案 1 :(得分:1)

您必须解决a + 4b + 5c + 5d = 20000 (a,b,c,d >=0)

a + 4b = 2000 - 5e = 5(400-e)其中e = c + d

所以a + 4b可以是0, 5, 10, 15, 20, ..., 2000

您可以轻松地从上方找到ab的所有可能值

之后您知道e = c + d的价值,从那里您可以轻松找到cd的所有可能值。