添加总和的唯一数字组合

时间:2016-10-13 02:52:39

标签: algorithm combinations permutation

我最近在一次采访中被问到这个问题并且完全被困了。我知道之前有这样的问题,但是没有人处理过这个问题。

给定一个数字,找到所有可能的方法,只使用数字1,2,3加起来。所以对于3的输入,输出将是4,因为组合将是1,1,1和1,2和2,1和3.我知道硬币改变算法,但它没有给我这个排列1,2和2,1。所以我最终实现了硬币更改算法并且无法获得排列部分。有没有人有任何想法?

2 个答案:

答案 0 :(得分:1)

这是一个递归问题:

以5

的可能选项为例
X X X X X
1 X X X X
2   X X X
3     X X

所以 f(5)=f(4) + f(3) + f(2)

所以通用解决方案是

f(1)=1
f(2)=2
f(3)=4
f(N)= f(N-1) + f(N-2) + f(N-3) for N > 3

答案 1 :(得分:0)

要回答有关问题分类的问题,我看起来像动态编程问题。请参阅以下stanford.edu

提出的问题

1维DP示例

◮ Problem: given n, find the number of different ways to write
n as the sum of 1, 3, 4
◮ Example: for n = 5, the answer is 6
5 = 1 + 1 + 1 + 1 + 1
= 1 + 1 + 3
= 1 + 3 + 1
= 3 + 1 + 1
= 1 + 4
= 4 + 1

这是solution to similar problem

相关问题