輸入一組不重複數字,全排列

2021-10-08 02:28:38 字數 856 閱讀 1035

全排列是我們讀書時課堂上已經學過東西,給出1,2,3三個數,有多少個組合方式呢?

123,132,213,231,312,321

很快我們就能給出這組數的全排列,全排列個數=n*(n-1)*(n-2)*…*1=n!

看起來很easy,我以為**實現起來分分鐘的事情,然後並沒有

這是我一口氣寫完的**,輸出卻什麼都沒有

vectorint>

>

permutation

(vector<

int> num_list)

}return d_list;

}

最後發現,當輸入乙個空列表時,返回乙個空列表,最後在for (int j = 0; j < temp_list.size(); j++)時,沒有得到插入當前前值。修改後我們看下

vectorint>

>

permutation

(vector<

int> num_list)

for(

int i =

0; i < num_list.

size()

; i++)}

return d_list;

}int

main

(int argc,

char

*ar**)

}printf

("\n");

return0;

}/* 輸出結果:

1 2 3

1 3 2

2 1 3

2 3 1

3 1 2

3 2 1

*/

46 全排列(無重複數字)

這是無重複數字的全排列。注意遞迴函式中的迴圈 迴圈起始位置 和used陣列的使用 class solution void dfs int nums for int i 0 i還學習了交換法,不用申請used陣列。但是看了看,好像空間也沒節省多少啊。可能是因為為了轉換成list要將int轉換成inte...

DFS有重複數字的全排列

此文寫於2017 11 25 全排列就不說了,乙個next permutation就解決了。但是有重複的數字還能用基本的全排列嗎?答案顯然是不能的,我們需要一些語句來幫助我們避免重複。讓我們結合 來分析 有重複的全排列 include include using namespace std cons...

非重複組合排列(含重複數字時,生成不重複組合排列)

sample input 1 2 2 3 sample output 分析資料 這裡和不含重複資料生成全組合排列 是不同的,如果使用原 會出現重複的資料,主要原因是在遞迴的時候,會把那些重複的數字當作不同的數字利用,而平等對待,直接進行遞迴。我們要做的就是把相同的數區分出來,我們這裡可以引入乙個陣列...