コンビネーションオペレーション

641 ワード

import copy
def comb(a):
    b=[]
    c=[]
    c.append(b)
    for item in a:
        b=[]
        for citem in c:
            x=copy.deepcopy(citem)
            x.append(item)
            b.append(x)
        for bitem in b:
##            print bitem
            c.append(bitem)
    print len(c)

comb([1,2,3,4])

数列の組合せを計算します.
 
構想:[1,2,3]が[1,2,3,4]に増加するごとに、組合せ状況は[comb([1,2,3]),[item,4]for item in comb([1,2,3])]である.
なお、Pythonで値を割り当てる場合は、新しい空間を作成することなく参照を生成し、copyを通過する必要がある.deepcopy深いコピーは元の変数空間と独立して開いている.