Vegetables
V2EX  ›  算法

如何在 数组 [0, 1, 2, 3, ..., n] 中选取 m 个不相邻的整数?

By Vegetables at 2018 年 11 月 27 日 · 4516 次点击
9 条回复  •  2019-03-10 09:50:12 +08:00
casparchen
   1
casparchen  
   2018 年 11 月 27 日
是要问有多少种方案,还是问随便一种?
Vegetables
   2
Vegetables  
OP
   2018 年 11 月 27 日
@casparchen 所有符合要求的结果
casparchen
   3
casparchen  
   2018 年 11 月 27 日
如果要列出所有结果那一个 DFS 不就行了
casparchen
   4
casparchen  
   2018 年 11 月 27 日   ❤️ 1
```
def dfs(lst, start, m):
if m <= 0:
print(list(filter(lambda x: x != None, lst)))
else:
for i in range(start, len(lst)):
lst[i] = i
dfs(lst, i+2, m-1)
lst[i] = None
dfs([None for i in range(9)], 0, 5)
```

```
[0, 2, 4, 6, 8]
[Finished in 0.1s]
```
EchoUtopia
   5
EchoUtopia  
   2018 年 11 月 27 日 via Android   ❤️ 1
选 n 的时候:n,f(n-2);不选 n 的时候:f(n-1)
rabbbit
   6
rabbbit  
   2018 年 11 月 28 日   ❤️ 1
Wincer
   7
Wincer  
   2018 年 11 月 28 日 via Android
@rabbbit 什么主题
azygote
   8
azygote  
   2018 年 11 月 28 日 via iPhone
回溯法
t9ouKal33vGEZyf5
   9
t9ouKal33vGEZyf5  
   2019 年 3 月 10 日   ❤️ 1
这道题目也许和青蛙跳的问题类似,希望这篇文章对你有所帮助:[一只青蛙跳出来的分治法、回溯法与动态规划]( https://www.cnblogs.com/genialx/p/10191366.html)
© 2026 V2EX · 35ms · 3.9.8.5