數組全排列算法的python實現

主要思路:

      每次循環,取出一個元素添加的結果數組中,而對剩餘的元素進行相同的全排列操作。終止條件:剩餘的元素爲1。

如[1,2,3,4]的全排列,可以看成是將1或2或3或4(for)放在固定位置,[2,3,4],[1,3,4],[1,2,4],[1,2,3]的全排列,以此類推,[2,3,4]的全排列,可以看成是將2或3或4放在固定位置,[3,4],[2,4],[2,3]的全排列,直到數組中僅有一個元素爲止。

import copy
all = [1,2,3,4]
result = []
def fun_fron(remain_list, res_list):
    if len(remain_list) == 1:
        res_list.append(remain_list[0])
        print res_list
        result.append(res_list)
    else:
        for j in xrange(len(remain_list)):
            remain_list_c = copy.deepcopy(remain_list)
            res_list_c = copy.deepcopy(res_list)
            twp = remain_list_c.pop(j)
            res_list_c.append(twp)
            fun_fron(remain_list_c,res_list_c)
        
fun_fron(all,[])

print len(result)


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章