我试图实现更改计数问题的变体(在算法中),需要找到可以更改数量的不同方法的数量,经过多次推理后,结果证明这是一个数学问题。例如,如果给定硬币50,20,100找到改变300的方式的数量
问题是形式的等式
ax1 + bx2 + ... + kxn = y, a, b, ..., k and y all known and > 0
需要找到所有可能的解决方案,包括0的正整数集。实际上我只需要解决方案的数量。 我自己一般会想出算法,但我不确定如何解决这个问题。
答案 0 :(得分:0)
这是一个经典的动态编程问题。
让factor_key = TRUE
为您可以使用可用硬币支付x的方式。
a[x]
因为支付0的唯一方法是不给任何硬币。
你通过添加硬币来建立它。对于每个硬币,您需要迭代感兴趣的范围(0-300)并计算a[0]=1
(如果x> =硬币)。
完成所有硬币a[x] = a[x] + a[x - coin]
后,您将获得所需的结果。
答案 1 :(得分:-1)
如果您只需要一些解决方案 然后对于非负积分解=(N + r-1)C(r-1) 对于正整数解=(N-1)C(r-1) 其中N是所有变量的总和 r是变量数