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

2018-11-27 22:53:19 +08:00
 Vegetables
3468 次点击
所在节点    算法
9 条回复
casparchen
2018-11-27 23:08:27 +08:00
是要问有多少种方案,还是问随便一种?
Vegetables
2018-11-27 23:15:34 +08:00
@casparchen 所有符合要求的结果
casparchen
2018-11-27 23:18:06 +08:00
如果要列出所有结果那一个 DFS 不就行了
casparchen
2018-11-27 23:25:16 +08:00
```
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
2018-11-27 23:25:50 +08:00
选 n 的时候:n,f(n-2);不选 n 的时候:f(n-1)
rabbbit
2018-11-28 00:12:36 +08:00
Wincer
2018-11-28 00:13:39 +08:00
@rabbbit 什么主题
azygote
2018-11-28 01:41:24 +08:00
回溯法
t9ouKal33vGEZyf5
2019-03-10 09:50:12 +08:00
这道题目也许和青蛙跳的问题类似,希望这篇文章对你有所帮助:[一只青蛙跳出来的分治法、回溯法与动态规划]( https://www.cnblogs.com/genialx/p/10191366.html)

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/512129

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX