- Combination:
都是i
从s
开始,而Permutation都是i
从0
开始
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
| nums = [...] ans = []
# C(m, n) func dfs(n, s, cur): if cur.size() == n: ans.append(cur) return
for i = s to nums.size(): cur.append(nums[i]) dfs(n, i + 1, cur) cur.pop()
for i = 0 to nums.size(): dfs(i, 0, [])
|
- Permutation:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
| nums = [...] ans = []
used = [False] * nums.size()
# P(m, n) func dfs(n, s, cur): if cur.size() == n: ans.append(cur) return
for i = 0 to nums.size(): if used[i]: continue used[i] = True
cur.append(nums[i]) dfs(n, i + 1, cur) cur.pop()
used[i] = False
for i = 0 to nums.size(): dfs(i, 0, [])
|