求給定陣列的全排列。
如:輸入:
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個元素中取出乙個元...