程式設計與演算法(二)全排列

2021-09-13 16:27:51 字數 620 閱讀 5297

題目

給定乙個由不同的小寫字母組成的字串,輸出這個字串的所有全排列。 我們假設對於小寫字母有』a』 < 『b』 < … < 『y』 < 『z』,而且給定的字串中的字母已經按照從小到大的順序排列。

輸入

輸入只有一行,是乙個由不同的小寫字母組成的字串,已知字串的長度在1到6之間。

輸出

輸出這個字串的所有排列方式,每行乙個排列。要求字母序比較小的排列在前面。字母序如下定義:

已知s = s1s2…sk , t = t1t2…tk,則s < t 等價於,存在p (1 <= p <= k),使得

s1 = t1, s2 = t2, …, sp

-1 = tp

-1, sp

< tp成立。

思路

直接上stl裡的next_permutation()函式就ok了

借鑑了乙個精簡好看的**

順便放乙個寫得很好的介紹這個函式的鏈結

stl的next_permutation()函式

**

全排列與子集演算法

一 全排列演算法是一種經典的遞迴演算法。例如集合的全排列為共3!種。遞迴法求解的思路是先固定第乙個元素,求剩下的全排列,求剩下的全拍列時,固定剩餘元素中的第乙個元素,再求剩下元素的全排列,直到就剩乙個元素停止。例如求集合的全排列。1 固定元素1求元素的全排列 1 固定元素2求的全排列 1 固定元素3...

演算法 全排列

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

全排列演算法

1.遞迴全排列 分別將每個位置交換到最前面位,之後全排列剩下的位。遞迴全排列 1 2 3 4 5 1,for迴圈將每個位置的資料交換到第一位 swap 1,1 5 2,按相同的方式全排列剩餘的位 2.字典序全排列演算法 對給定的字符集中的字元規定了乙個先後關係,在此基礎上規定兩個全排列的先後是從左到...