您的位置:首页 > 其它

算法实现:在10个数中选6个数,显示所有组合

2013-03-30 18:18 309 查看
今天从infoq看到一个算法题,于是用python(最近一年改用python做项目了)实现了一下。

算法探讨:在10个数中选6个数,显示所有组合

比如“1,2,3....10”,1到10这10个数,显示他的所有可能组合情况(排列顺序无所谓)

# -*- coding: utf-8  -*-
#!/usr/local/bin/python

Count = 0
def combination(data, t, vl):
_kk = len(data)
for _i in range(_kk-t+1):
vl.append(data[_i])
new_data = data[_i+1:]
if t-1 == 1:
for _j in range(len(new_data)):
print ','.join(map(str,vl))+','+str(new_data[_j])
global Count
Count += 1
else:
combination(new_data, t-1, vl)
vl.pop()

if __name__ == '__main__':
n = 10 # 总数
t = 6  # 选取个数
vl = [] # 用于存放选中的数字
data = range(1, n+1)#[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
combination(data, t, vl)
_count_correct = reduce(lambda x, y: x*y,range(n,n-t,-1)) / reduce(lambda x, y: x*y,range(t,0,-1))
print Count, Count == _count_correct
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐