陣列的全排列演算法

2021-07-14 07:48:25 字數 1214 閱讀 8115

求給定陣列的全排列。

如:輸入:

1,2,3

輸出:1 2 3

1 3 2

2 1 3

2 3 1

3 2 1

3 1 2

思路:這裡借用別人的解題思路,我就不重述了

1、首先看最後兩個數4, 5。 它們的全排列為4 5和5 4, 即以4開頭的5的全排列和以5開頭的4的全排列。

由於乙個數的全排列就是其本身,從而得到以上結果。

2、再看後三個數3, 4, 5。它們的全排列為3 4 5、3 5 4、 4 3 5、 4 5 3、 5 3 4、 5 4 3 六組數。

即以3開頭的和4,5的全排列的組合、以4開頭的和3,5的全排列的組合和以5開頭的和3,4的全排列的組合.

從而可以推斷,設一組數p = , 全排列為perm(p),pn = p - 。

因此perm(p) = r1perm(p1), r2perm(p2), r3perm(p3), ... , rnperm(pn)。當n = 1時perm(p} = r1。

為了更容易理解,將整組數中的所有的數分別與第乙個數交換,這樣就總是在處理後n-1個數的全排列。

下面是我的**:

//// main.cpp

// 全排列

//// created by zjl on 16/7/2.

//#include #include using namespace std;

void permutation(vector>& res, vector& num, int index)

for(int i = index; i < num.size(); i++)

}int main(int argc, const char * argv) ;

permutation(res, vec, 0);

for(int i = 0; i < res.size(); i++){

for(int j = 0; j < res[0].size(); j++)

cout<

陣列的全排列

學過數學的人都知道,全排列的意思是什麼。現在如何用計算機的程式語言實現陣列的全排列呢?陣列的全排列可用於求解八皇后問題,具體參見 全排列解決八皇后問題。與此同時,全排列經常會出現在筆試或者面試,如求字串的全排列。之所以那它作為考題,因為它難度適中,既可以考察遞迴實現,又能進一步考察非遞迴的實現,便於...

陣列的全排列

1.問題背景 學過數學的人都知道,全排列的意思是什麼。現在如何用計算機的程式語言實現陣列的全排列呢?陣列的全排列可用於求解八皇后問題。與此同時,全排列經常會出現在筆試或者面試,如求字串的全排列。全排列表示把集合中元素的所有按照一定的順序排列起來,使用p n,n n 表示n個元素全排列的個數。p n,...

演算法 全排列

從n個不同元素中任取m m n 個元素,按照一定的順序排列起來,叫做從n個不同元素中取出m個元素的乙個排列。當m n時所有的排列情況叫全排列。用演算法分別實現全排列,其中n個元素儲存在乙個長度為n的陣列中。實現全排列之前,先看一下對進行全排列的一種方法 從圖中可以看出,我們首先從n個元素中取出乙個元...