日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術(shù)文章
文章詳情頁

python實(shí)現(xiàn)全排列代碼(回溯、深度優(yōu)先搜索)

瀏覽:212日期:2022-08-06 08:40:29

從n個(gè)不同元素中任取m(m≤n)個(gè)元素,按照一定的順序排列起來,叫做從n個(gè)不同元素中取出m個(gè)元素的一個(gè)排列。當(dāng)m=n時(shí)所有的排列情況叫全排列。

公式:全排列數(shù)f(n)=n!(定義0!=1)

1 遞歸實(shí)現(xiàn)全排列(回溯思想)

1.1 思想

舉個(gè)例子,比如你要對a,b,c三個(gè)字符進(jìn)行全排列,那么它的全排列有abc,acb,bac,bca,cba,cab這六種可能就是當(dāng)指針指向第一個(gè)元素a時(shí),它可以是其本身a(即和自己進(jìn)行交換),還可以和b,c進(jìn)行交換,故有3種可能,當(dāng)?shù)谝粋€(gè)元素a確定以后,指針移向第二位置,第二個(gè)位置可以和其本身b及其后的元素c進(jìn)行交換,又可以形成兩種排列,當(dāng)指針指向第三個(gè)元素c的時(shí)候,這個(gè)時(shí)候其后沒有元素了,此時(shí),則確定了一組排列,輸出。但是每次輸出后要把數(shù)組恢復(fù)為原來的樣子。

python實(shí)現(xiàn)全排列代碼(回溯、深度優(yōu)先搜索)

1.2 python實(shí)現(xiàn)

def permutations(arr, position, end): if position == end: print(arr) else: for index in range(position, end): arr[index], arr[position] = arr[position], arr[index] permutations(arr, position + 1, end) arr[index], arr[position] = arr[position], arr[index] # 還原到交換前的狀態(tài),為了進(jìn)行下一次交換 arr = [1, 2, 3, 4]permutations(arr, 0, len(arr))

2 深度優(yōu)先搜索(DFS)實(shí)現(xiàn)全排列

2.1 思想

定義全排列問題:輸入一個(gè)長度為n的列表arr,輸出arr的全排列。

(1)首先可以確定的是,每一種全排列的結(jié)果中包含的列表長度均是n。想象面前有n個(gè)空盒子,現(xiàn)在要把這n個(gè)數(shù)放到這些空盒子里去,每個(gè)盒子只能放一個(gè)數(shù)。那么第一個(gè)盒子中可以放的選擇是n種,可以使用一個(gè)循環(huán)來逐個(gè)嘗試。

for index in range(0, len(arr)):temp[position] = arr[index]

(2)第一個(gè)盒子放完后,就該往第二個(gè)盒子里放了。假設(shè)第一個(gè)盒子里放的是arr的第一個(gè)數(shù),那么第二個(gè)盒子就只能放第2~n個(gè)數(shù)了(不能重復(fù))。為此引入visit列表用來標(biāo)記arr中哪些數(shù)字被使用過了。初始化:

visit = [True, True, True, True]

這樣,當(dāng)?shù)谝粋€(gè)位置已經(jīng)使用過時(shí),就在visit里做標(biāo)記:visit = [False, True, True, True]

因此放第一個(gè)盒子的代碼可以改寫如下:

for index in range(0, len(arr)): if visit[index] == True: temp[position] = arr[index] visit[index] = False

(3)當(dāng)?shù)趉個(gè)盒子處理完畢后,處理下一個(gè)盒子直接調(diào)用dfs(k+1)即可,也就是遞歸調(diào)用。解決了當(dāng)下該如何做,下一步也就知道怎么做了。

(4)遞歸調(diào)用的一定要注意的問題是遞歸調(diào)用的出口,否則循環(huán)調(diào)用下去程序會崩潰無法運(yùn)行。在這個(gè)問題中什么時(shí)候結(jié)束遞歸調(diào)用呢?答案是當(dāng)這n個(gè)盒子都放滿了,即處理到第n+1個(gè)盒子時(shí)結(jié)束調(diào)用,同時(shí)輸出此時(shí)的排列結(jié)果。

2.2 python實(shí)現(xiàn)

visit = [True, True, True, True]temp = ['' for x in range(0, 4)] def dfs(position): # 遞歸出口 if position == len(arr): print(temp) return # 遞歸主體 for index in range(0, len(arr)): if visit[index] == True: temp[position] = arr[index] visit[index] = False # 試探 dfs(position + 1) visit[index] = True # 回溯。非常重要 arr = [1, 2, 3, 4]dfs(0)

注釋了“非常重要”的語句是不能省略的,省略后僅出現(xiàn)[1, 2, 3, 4]一條結(jié)果。dfs(k+1)前后的兩條語句分別稱之為試探和回溯。

3 combination和permutations函數(shù)的區(qū)別

permutations方法重在排列:

import itertoolsn=3a=[str(i) for i in range(n)]s=''s=s.join(a)for i in itertools.permutations(s,n): print (’’.join(i)) # 結(jié)果 012021102120201210

combinations方法重在組合:

import itertoolsn=3a=[str(i) for i in range(n)]s=''s=s.join(a)for i in itertools.combinations(s,n): print (’’.join(i)) # 結(jié)果 012

以上這篇python實(shí)現(xiàn)全排列代碼(回溯、深度優(yōu)先搜索)就是小編分享給大家的全部內(nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持好吧啦網(wǎng)。

標(biāo)簽: Python 編程
相關(guān)文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
999久久久精品国产| 不卡av一区二区| 视频二区不卡| 亚洲青青久久| 综合亚洲自拍| 欧美一区二区三区久久精品| 免费日韩av片| 98精品视频| 欧洲av不卡| 免费日韩av片| 蜜桃视频一区二区三区在线观看 | 久久午夜影院| 1000部精品久久久久久久久| 日韩av在线播放网址| 免费一级欧美在线观看视频| 美女精品在线观看| 亚洲专区视频| 六月丁香综合在线视频| 日韩精品久久久久久久电影99爱| 午夜久久久久| 视频一区二区不卡| 男人的天堂亚洲一区| 中文字幕av一区二区三区四区| 国产精品主播| 亚洲精品电影| 国产精品sss在线观看av| 国产网站在线| 米奇777超碰欧美日韩亚洲| 韩国三级一区| 国产手机视频一区二区| 色一区二区三区四区| 亚洲精品伦理| 人在线成免费视频| 日韩va欧美va亚洲va久久| 国产精品久久久久久久久久妞妞| 国产一区二区三区免费在线| 日韩欧美看国产| 亚洲综合婷婷| 久久久一本精品| 精品久久久中文字幕| 久久国产欧美日韩精品| 99视频+国产日韩欧美| 久久精品99国产精品日本| 日本色综合中文字幕| 麻豆国产欧美日韩综合精品二区| 成人精品亚洲| 日本亚洲不卡| 国产高潮在线| 午夜在线播放视频欧美| 日韩高清欧美激情| 亚洲一区激情| 中文在线一区| 日韩午夜高潮| 爽爽淫人综合网网站| 欧美日韩在线播放视频| 国产成人精品一区二区三区视频 | 在线精品国产亚洲| 天堂网在线观看国产精品| 国产在线日韩精品| 精品成av人一区二区三区| 国产精品115| 久久精品99国产国产精| 国产精品久久国产愉拍| 麻豆精品在线播放| 都市激情国产精品| 女人av一区| 自拍自偷一区二区三区| 国产精品毛片aⅴ一区二区三区| a国产在线视频| 日韩电影免费在线观看| 精品国产三区在线| 日本激情一区| 国产一区二区久久久久| 国产精品网在线观看| 欧美天堂一区| 日韩高清在线观看一区二区| 中国女人久久久| 亚洲一区免费| 丝袜国产日韩另类美女| 日韩av中文在线观看| 午夜亚洲福利| 美女尤物国产一区| 激情91久久| 国产91在线播放精品| 久久精品国产精品亚洲毛片| 免费在线亚洲欧美| 久久精品国产在热久久| 欧美日韩一区二区三区在线电影| 亚洲日本国产| 中文一区一区三区免费在线观 | 日韩一区二区在线免费| 久久蜜桃av| 免播放器亚洲| 麻豆高清免费国产一区| 99热国内精品| 日韩欧美美女在线观看| 久久久久.com| 91精品国产成人观看| 日韩精品免费观看视频| 亚洲激情另类| 久久精品一本| 久久视频一区| 亚洲精品大全| 不卡在线一区| 精品视频高潮| 日本不卡视频在线| 91看片一区| 蜜桃av一区二区| 在线日韩一区| 久久男人av| 国产欧美一区二区三区精品观看| 日韩视频不卡| 欧美一级精品| 日韩深夜视频| 国产成人精品一区二区三区视频| 91av一区| 亚洲女同中文字幕| 亚洲一区久久| 久久久久久夜| 精品欧美视频| 国产欧美另类| 国产欧美日韩影院| 日韩视频免费| 亚洲va中文在线播放免费| 国产精品chinese| 国产精品日韩精品中文字幕| 视频在线观看91| 久久在线视频免费观看| 国产夫妻在线| 麻豆成人在线观看| 国产日韩亚洲| 日韩免费精品| 1024精品久久久久久久久| 久久影院资源站| 精品一二三区| 亚洲天堂av影院| 日韩**一区毛片| 日韩视频中文| 久久国产精品成人免费观看的软件| 国产精品www994| 国产成人精品亚洲线观看| 日韩国产欧美一区二区三区| 综合色就爱涩涩涩综合婷婷| 一区二区精彩视频| 四虎成人精品一区二区免费网站| 美国av一区二区| 久久国产精品久久久久久电车| 福利视频一区| 亚洲欧美日韩视频二区| 中文精品电影| 国产精品xvideos88| 成人影视亚洲图片在线| 久久久久久夜| 国产精品久久免费视频| 99在线观看免费视频精品观看| 国产精品成人**免费视频| 国产精品亚洲产品| 国产精品美女久久久浪潮软件| 樱桃视频成人在线观看| 在线一区视频观看| 激情综合在线| 色天使综合视频| 国产精品久久久久av电视剧| 国产精品免费精品自在线观看| 亚洲精一区二区三区| 四虎8848精品成人免费网站| 日韩精品网站| 美国欧美日韩国产在线播放| 日本成人在线网站| 成人国产精品久久| 国产午夜一区| 欧美激情五月| 国产高清久久| 日韩一区二区三区精品视频第3页 日韩一区二区三区免费视频 | 91精品国产乱码久久久久久久| 欧美日本久久| 欧美sss在线视频| 免费久久精品| 国产亚洲字幕| 久久亚洲成人| 少妇精品在线| 日韩在线精品| 只有精品亚洲| 精品久久中文| 首页国产欧美久久| 欧美日韩亚洲一区在线观看| 国产美女久久| 免费高潮视频95在线观看网站| 亚洲精品一区二区妖精| 久久麻豆精品| 国产欧美日韩影院| 精品美女视频 | 久久男女视频| 最新亚洲一区| 蜜臀va亚洲va欧美va天堂| 亚洲制服一区| 国产伦精品一区二区三区千人斩| 亚洲在线一区| 麻豆精品视频在线观看视频| 国产精品tv|