用一些给定的整数来实现N的方法

时间:2014-08-18 19:32:01

标签: algorithm combinations permutation

在Facebook的测试中询问了这个问题: 假设有一个游戏,我们每回合得分2,3或7。我们可以通过多少种方式获得X分数?

1 个答案:

答案 0 :(得分:1)

这是一个非常典型的背包问题,或者更具体地说,是一个变币问题。

我们有几种方法可以解决这类问题,但我们可以轻松地使用动态编程来解决它。

这个page很好地解释了解决方案,请按照自己的步调消化它:)

快速浏览一下,这是一个关于问题的伪代码:

int coins[3] = {2, 3, 7};

for (int i = 0; i < 5; ++i)  
    for (int j = coins[i]; j <= X; ++j)  
        dp[j] += dp[j - coins[i]];

你也可以尝试this,这是Uva上一个非常类似的问题。