排列組合(permutation)系列解題報告

2021-09-07 11:27:32 字數 1258 閱讀 9452

本文解說4道關於permutation的題目:

1. permutation:輸出permutation——基礎遞迴 

2. permutation sequence: 輸出字典序排列的第k個permutation——推理

3. next permutation:給定乙個permutation中的序列,求字典序它的下乙個permutation是什麼——邏輯推理

4. permutation ii:和第一題有細微的區別: 對於乙個可能有反覆元素的陣列輸出全部permutation——有條件dfs

1. permutation

:輸出permutation

——基礎遞迴

class solution

for(int i=0; i> permute(vector&num)

}return str;

}};

3. next permutation

給定乙個permutation中的序列,求字典序它的下乙個permutation是什麼。

——邏輯推理

①當前permutation從後往前找到一直上公升的子串行,假如一直上公升到index_i

②找到index為i到end中最小的。比num[i-1]大的數字,記index為j。交換num[i-1],num[j]

③對num[i]~num[end]從小到大排序

ps:要注意有反覆元素的情況e.g 

; code:

class solution 

}if(i>0 && j

4. permutation ii

和第一題有細微的區別: 對於乙個可能有反覆元素的陣列輸出全部permutation。

——有條件dfs

想一下遞迴條件:

肯定還是遞迴,遞迴條件應該是假設當前list中已經出現過這幾個元素排列。就不要再加進去。

所以在第一題基礎上僅僅加兩點:

1)對陣列裡全部元素排序

2)對於上一次加到過list的同樣元素(必定是在排序後陣列中與上乙個相鄰元素同樣的)不要再加

class solution

for(int i=0; i> permuteunique(vector&num)

};

c 排列組合排序 排列組合 組合數專題

書接上回,本期正男老師將帶大家梳理排列組合中組合數的相關考點,組合數考點可以細分為4類,分別為 分類數數問題 分組排序問題 塗色問題以及插棍問題。近六年高考真題中,組合數考點共涉及5道。組合數專題高考真題分布 組合數的定義以及公式如下圖所示。組合數定義 分類數數問題與排列問題中的窮舉問題相似,但分類...

排列組合實現

演算法 與網際網路 組合演算法 本程式的思路是開乙個陣列,其下標表示1到m個數,陣列元素的值為1表示其下標 代表的數被選中,為0則沒選中。首先初始化,將陣列前n個元素置1,表示第乙個組合為前n個數。然後從左到右掃瞄陣列元素值的 10 組合,找到第乙個 10 組合後將其變為 01 組合,同時將其左邊的...

排列組合 HNOI

我這方面比較水就只提供兩道題吧 1.hnoi2008 prison 監獄有連續編號為1.n的n個房間,每個房間關押乙個犯人,有m種宗教,每個犯人可能信仰其中一種。如果相鄰房間的犯人的宗教相同,就可能發生越獄,求有多少種狀態可能發生越獄此題略水,屬於hnoi送分題系列,用補集的思想可以輕鬆過。可能越獄...