组合算法------非递归

 这种方法相当于每次从数组里取一个元素和result里的所有列表元素相加,列表元素里长度大于等于n的(挑选出n个数的组合)就没有和元素相加的意义了,用不到。长度小于n的都会被用到,最后对result里的元素过滤一下,只保留长度是n的。

def combination_add(num_list,n):
    result = [[]]
    for i in num_list:
        result.extend([[i]+x for x in result if len(x)<n])
    result = filter(lambda l:len(l)==n,result)
    print result

猜你喜欢

转载自blog.csdn.net/qq_38322240/article/details/84488956
今日推荐