我最近在一次采访中被问到这个问题并且完全被困了。我知道之前有这样的问题,但是没有人处理过这个问题。
给定一个数字,找到所有可能的方法,只使用数字1,2,3加起来。所以对于3的输入,输出将是4,因为组合将是1,1,1和1,2和2,1和3.我知道硬币改变算法,但它没有给我这个排列1,2和2,1。所以我最终实现了硬币更改算法并且无法获得排列部分。有没有人有任何想法?
答案 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