leetcode 377 Combination Sum IV 详细解答

leetcode 377 Combination Sum IV 详细解答
上来无脑用回溯,像 leetcode 77
代码如下:
leetcode 377 Combination Sum IV 详细解答
结果超时。所以只能换个思路。


举例说明:
nums=[1,2,3]target=4nums = [1, 2, 3] \\target = 4

1[1]1 → [1]
2[1,1],[2]2 → [1, 1], [2]
3[1,1,1],[1,2],[2,1],[3]3 → [1, 1, 1], [1, 2], [2, 1], [3]
4[1,1,1,1],[1,1,2],[1,2,1],[1,3],[2,1,1],[2,2],[3,1]4 → [1, 1, 1, 1], [1, 1, 2], [1, 2, 1], [1, 3], [2, 1, 1], [2, 2], [3, 1]

通过举例我们可以发现,这是个背包问题
包就是4,硬币就是 [1,2,3]
如果要求的 dp[4],
(1)如果将 1 放入背包,那么背包就只有 3 的剩余,即是求 dp[3]
(2)如果将 2 放入背包,那么背包就只有 2 的剩余,即要求的是 dp[2]
(3)如果将 3 放入背包,那么背包就只有 1 的剩余,即要求的是 dp[1]
   ............

如果target是7,8也是一样的求法。


最后总结出来的状态转移方程。
f(i)target=i,i>=numf(i)表示target = i时的组合数, 在 i >= num前提下:
f(i)=numnumsf(inum) f(i)=\sum_{num\in{nums}}f(i-num)
具体代码如下:
leetcode 377 Combination Sum IV 详细解答


参考别人的代码改进了一下:
leetcode 377 Combination Sum IV 详细解答

相关文章:

  • 2021-12-28
  • 2021-10-07
  • 2021-08-02
  • 2022-12-23
  • 2021-12-31
  • 2021-05-16
  • 2021-10-16
  • 2022-12-23
猜你喜欢
  • 2022-12-23
  • 2022-12-23
  • 2021-12-19
  • 2021-06-20
相关资源
相似解决方案