我的数学问题如下:
我有一个总容量为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公斤。
答案 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
您可以轻松地从上方找到a
和b
的所有可能值
之后您知道e = c + d
的价值,从那里您可以轻松找到c
和d
的所有可能值。