【发布时间】:2021-10-24 02:52:58
【问题描述】:
我遇到了以下问题,我不确定如何解决:
按照数字在给定输入集中出现的顺序打印除空集以外的所有子集。
Sample input:
5 3 8
Sample output:
5
3
8
53
58
38
538
我的问题是,我该怎么做?我知道要生成所有子集,我可以使用以下代码(在 python 中):
numbers = [5, 3, 8]
n = len(numbers)
ans = [0] * n
def subset(pos):
if pos == n:
print(ans)
return
ans[pos] = 0
subset(pos + 1)
ans[pos] = 1
subset(pos + 1)
subset(0)
【问题讨论】:
-
既然喜欢python,有没有试过
itertools的powerset配方?见stackoverflow.com/a/68032938/3080723 -
我可以使用 BFS 在 C++ 中发布答案。我不知道它是否对你有帮助,但你会明白它背后的基本思想。
-
谢谢@Stef 我想纯粹递归地解决这个问题,因为我希望建立我的理解。即我想自己实现逻辑。 risingStark,如果可以的话,那确实会有所帮助。我熟悉 BFS,只是不熟悉如何递归地解决这个问题。
标签: python algorithm recursion subset