<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      再議“生成全排列算法”

        看了“白話算法(7) 生成全排列的幾種思路(一)”和“白話算法(7) 生成全排列的幾種思路(二) 康托展開”。在此,將以前本人推導的全排列算法介紹一下,和廣大的網友交流一下。

        以例子說明,用0、1、2、3,四個數組成全排列。

        首先可以知道,這四個數組成的全排列一共有4!=24個。那么給這24個全排列編號,分別為0、1、2……23。再給定一個算法,通過編號計算出一個全排列。本文的目的就是找到這樣的算法。

        把所有的全排列列舉出來可以發現,0在末位的有6個,1在末位的有6個,等等。

        觀察0在末位的六個,分別是

        1、2、3、0

        1、3、2、0

        2、1、3、0

        2、3、1、0

        3、1、2、0

        3、2、1、0

        可以看出這6個全排列,除了末位是0外,前面三個數正好是1、2、3的全排列

        再觀察1在末位的六個,分別是

        0、2、3、1

        0、3、2、1

        2、0、3、1

        2、3、0、1

        3、0、2、1

        3、2、0、1

        也可以看出這6個全排列,除了末位是1外,前面三個數正好是0、2、3的全排列

        類似的,末位是2和3的6個全排列,除了末位是一樣的以外,前面三個數正好是剩下的三個數的全排列。

        

        于是該問題就可以用下面的步驟來解決。

        1、根據編號確定末位數字

        2、確定末位數字后,獲得剩余的數字

        3、對編號適當的處理,得到新的編號

        4、問題演化成除了末位數字后,用新的編號和剩余的數字,計算剩余數字的全排列。

       

        再用一個具體的例子來說明。比方說,用編號13來計算0、1、2、3的一個全排列。

        1、先給這4個數字排好序。是0、1、2、3

        2、計算[13/3!]+1=3,表示末位數是第3個數。注:[X]表示取X的整數部分。

        3、把第3個數和第4個數(未排的最后1個數)交換。此時,數字的順序是0、1、3、2。藍色的表示已經排好。

        4、新的編號為13 mod 3!=1

        5、計算[1/2!]+1=1,表示末位數是第1個數。

        6、把第1個數和第3個數(未排的最后1個數)交換。此時,數字的順序是3、1、0、2。藍色的表示已經排好。

        7、新的編號為1 mod 2!=1

        8、計算[1/1!]+1=2,表示末位數是第2個數。

        9、把第2個數和第2個數(未排的最后1個數)交換。此時,數字的順序是3、1、0、2。藍色的表示已經排好。

        10、因為只剩下一個數,所以編號13對應的全排列就是3、1、0、2

       

        其他的編號計算方法和此一樣。

        后面的這個表格就是按照上面的算法得到所有的編號和全排列的關系

      A(0) A(1) A(2) A(3) 編號
      1 2 3 0 0
      2 1 3 0 1
      2 3 1 0 2
      3 2 1 0 3
      1 3 2 0 4
      3 1 2 0 5
      3 2 0 1 6
      2 3 0 1 7
      2 0 3 1 8
      0 2 3 1 9
      3 0 2 1 10
      0 3 2 1 11
      1 3 0 2 12
      3 1 0 2 13
      3 0 1 2 14
      0 3 1 2 15
      1 0 3 2 16
      0 1 3 2 17
      1 2 0 3 18
      2 1 0 3 19
      2 0 1 3 20
      0 2 1 3 21
      1 0 2 3 22
      0 1 2 3 23

        

        通過這樣的算法,通過指定的編號就能算出一個全排列。

        如果要遍歷所有的全排列,則只要遍歷編號就能完成。

        如果要隨機獲得一個全排列,則隨機生成一個編號,再計算出全排列就可以了。

       

        具體的代碼在我之前的文章“遍歷排列的實現——VB2005”中,這里就不重復貼出了。

      posted @ 2011-04-29 15:39  萬倉一黍  閱讀(2831)  評論(6)    收藏  舉報
      主站蜘蛛池模板: 乱人伦中文视频在线| 南阳市| 国产欧美综合在线观看第十页| 蜜桃成熟色综合久久av| 午夜精品福利亚洲国产| 国产婷婷综合在线视频中文| 亚洲中文字幕日产无码成人片| 国产精品视频免费一区二区三区| 亚洲一区国色天香| 国产精品免费中文字幕| 亚洲国产精品一区在线看| 国产熟女av一区二区三区| 一本大道无码av天堂| 成人3d动漫一区二区三区| 国产精品一区在线免费看| 亚洲人成色7777在线观看不卡 | 免费人成再在线观看视频| 色综合视频一区二区三区| 人妻系列无码专区无码中出 | 日韩在线观看 一区二区| 国产精品99久久免费| 亚洲综合国产伊人五月婷| 国产精品中文一区二区| 婷婷五月综合激情| 日韩中文字幕精品人妻| av天堂久久精品影音先锋| 人人妻人人澡人人爽欧美一区双 | 国产成人午夜精品影院| 99久久精品视香蕉蕉| 牙克石市| 色综合色综合久久综合频道| 天天拍夜夜添久久精品大| 亚洲av日韩av永久无码电影| 国产精品国产三级国av| 午夜一区欧美二区高清三区| 亚洲综合天堂一区二区三区| 国产精品午夜福利导航导| 久久久久夜夜夜精品国产 | 久久午夜无码鲁丝片午夜精品| 免费久久人人爽人人爽AV| 东方四虎av在线观看|