FreeEIM 全排列算法原理和实现
FreeEIM 全排列算法原理和實(shí)現(xiàn)
本文為原創(chuàng),如需轉(zhuǎn)載,請(qǐng)注明作者和出處,謝謝!
???? 全排列是將一組數(shù)按一定順序進(jìn)行排列,如果這組數(shù)有n個(gè),那么全排列數(shù)為n!個(gè)。現(xiàn)以{1, 2, 3, 4, 5}為
例說(shuō)明如何編寫(xiě)全排列的遞歸算法。
1、首先看最后兩個(gè)數(shù)4, 5。 它們的全排列為4 5和5 4, 即以4開(kāi)頭的5的全排列和以5開(kāi)頭的4的全排列。
由于一個(gè)數(shù)的全排列就是其本身,從而得到以上結(jié)果。
2、再看后三個(gè)數(shù)3, 4, 5。它們的全排列為3 4 5、3 5 4、 4 3 5、 4 5 3、 5 3 4、 5 4 3 六組數(shù)。
即以3開(kāi)頭的和4,5的全排列的組合、以4開(kāi)頭的和3,5的全排列的組合和以5開(kāi)頭的和3,4的全排列的組合.
從而可以推斷,設(shè)一組數(shù)p = {r1, r2, r3, ... ,rn}, 全排列為perm(p),pn = p - {rn}。
因此perm(p) = r1perm(p1), r2perm(p2), r3perm(p3), ... , rnperm(pn)。當(dāng)n = 1時(shí)perm(p} = r1。
為了更容易理解,將整組數(shù)中的所有的數(shù)分別與第一個(gè)數(shù)交換,這樣就總是在處理后n-1個(gè)數(shù)的全排列。
算法如下:
誰(shuí)有更高效的遞歸和非遞歸算法,請(qǐng)回貼。
總結(jié)
以上是生活随笔為你收集整理的FreeEIM 全排列算法原理和实现的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 2017南京大学计算机考研复试分,南京大
- 下一篇: 资料: 颜色RGB基础定义