【发布时间】:2013-04-23 05:11:57
【问题描述】:
已知从 1 到 100 中选择 10 个不同的数字存在 C(100,10) 种可能性。只要10 个数字不同。
如何通过编程列出所有组合??
我不想写10个循环,python或c首选
【问题讨论】:
标签: combinations
已知从 1 到 100 中选择 10 个不同的数字存在 C(100,10) 种可能性。只要10 个数字不同。
如何通过编程列出所有组合??
我不想写10个循环,python或c首选
【问题讨论】:
标签: combinations
使用 python 和itertools.combinations。
警告 - 打印需要很长时间
for i in itertools.combinations(xrange(1,101),10):
print i
【讨论】:
我的朋友Yujie Liu 提出了这个想法。使用纯迭代。
# select n diff numbers from min - max
def traceArr(arr, min, max, n):
if n > 0:
for i in range(min, max-n+2):
arr1 = arr[:]
arr1.append(i)
traceArr(arr1, i+1, max, n-1)
elif n == 0:
print arr
# Demo, select 5 diff numbers from 1-10
traceArr([], 1, 10, 5);
【讨论】: