【发布时间】:2019-08-16 07:26:16
【问题描述】:
给定一个来自 1...N 的整数列表,我试图找到元素的 K 个子集,同时保留元素的顺序。例如,当 N = 4 且 K = 2 时:
[1] [2, 3, 4]
[1, 2] [3, 4]
[1, 2, 3] [4]
[1, 2, 3, 4] []
应该是正确的输出。 到目前为止,我已经得到了第一列可能性。但我很难得到正确的逻辑。
final = [['' for x in range(K)] for y in range(N)]
i = 0
for k in range(0, K):
# row tracker
i = 0
while i < N:
if k > 0:
st = len(final[i][k - 1])
else:
st = 0
for j in range(0, N):
tmp = ""
prefix = chemicals[:j + 1]
tmp = tmp.join(str(i) for i in prefix)
final[i][k] = tmp
i += 1
print
同样,正确的输出应该是:
[1] [2, 3, 4]
[1, 2] [3, 4]
[1, 2, 3] [4]
[1, 2, 3, 4] []
集合可以是空的。
更新:这是 N=4、K=3 的正确输出
[1] [2] [3, 4]
[1] [2, 3] [4]
[1] [2, 3, 4] []
[1, 2] [3] [4]
[1, 2] [3, 4] []
[1, 2, 3] [4] []
[1, 2, 3, 4] [] []
【问题讨论】:
-
[1,2,3,4] [] []会成为 N=4、K=3 解决方案的一部分吗? -
是的,那是正确的
标签: python dynamic-programming combinatorics