0
我试图解决这个问题:硬币找零优化
假设我有一组N个硬币{A_1,A2,...,A_N}。总是会出现一个值为 1的硬币。 I 需要达到M的最小数量的硬币是多少?
约束条件是:
- 1≤N≤25
- 1≤米≤10^6
- 1≤A_I≤100
好的,我知道这是改变的问题。 我试图解决这个问题,使用广度优先搜索,动态编程和贪婪(这是不正确的,因为它并不总是提供最佳的解决方案)。但是,我得到超时限制(3秒)。
所以我想知道是否有这个问题的优化。 描述和约束称为我的注意,但我不知道如何使用它对我有利:
- 总是会出现值为1的硬币。
- 1≤A_I≤100
我在维基百科看到,这个问题也可以通过“与概率卷积树动态规划”来解决。但我什么都听不懂。
你能帮我吗? 这个问题可以在这里找到:http://goo.gl/nzQJem
谢谢你的回答。我试图实现这一点,在某些情况下速度很快,但在其他情况下速度很慢。然后我尝试了记忆,但它变成了O(n * m)。 – skide 2014-09-19 02:14:20
我认为它可以在O(n * min(M,a_n * a_ {n-1}))中完成记忆。不需要在M-a_n * a_ {n-1}下面搜索。 – Ante 2014-09-19 07:19:56
非常聪明的解决方案!现在我得到了AC。非常感谢你! – skide 2014-09-20 14:40:46