C 實現全排列

2021-08-18 06:17:23 字數 1144 閱讀 8055

總時間限制: 

1000ms

記憶體限制: 

65536kb

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

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

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

已知s = s

1s2...s

k , t = t

1t2...t

k,則s < t 等價於,存在p (1 <= p <= k),使得

s1 = t

1, s

2 = t

2, ..., s

p - 1 = t

p - 1, s

p< t

p成立。

樣例輸入

abc

樣例輸出

abc

acbbac

bcacab

cba

c++ stl中,有全排列函式

#include#include#include#include#include#includeusing namespace std;

char a[10];

int main()

while(next_permutation(a,a+n));

puts("");

}return 0;

}

另外也可以自己用遞迴實現這個演算法,比較難理解

#include #include #include #include using namespace std;

char str[10];

int len;

bool mark[10];

char prt[10];

//按順序列印字串中每乙個字元

void print()

void dfs(int s)

for(int i=0;i}

}int main()

C 實現全排列

給定乙個陣列,求這個陣列的全排列。列如 a 對陣列a求全排列 結題思路 將a陣列中的元素依次放在第乙個位置然,對剩下的元素進行全排列。剩下元素全排列依然是,將剩下的元素依次放在第乙個位置,對剩下的元素進行全排列。直到剩下的元素個數為乙個時,排列結束。這裡我給出固定元素1,對元素2 3 4進行全排列的...

全排列的實現(C)

找工作,筆試經常會出現乙個題,怎樣生成乙個集合內所有元素的全排列。剛開始的時候沒有覺得這是乙個難的問題。其實,當寫在試卷上,真的不太會,作答的過程感覺心裡沒有什麼底。回來後,查了一些資料,看了一些書,對這個問題有一定的認識,舉乙個例去清晰一下題目的意思,例子為 字符集的全排列 123,132,312...

全排列(遞迴) C 實現

給定乙個由不同的小寫字母組成的字串,輸出這個字串的所有全排列。我們假設對於小寫字母有 a b y z 而且給定的字串中的字母已經按照從小到大的順序排列。輸入只有一行,是乙個由不同的小寫字母組成的字串,已知字串的長度在1到6之間。輸出這個字串的所有排列方式,每行乙個排列。要求字母序比較小的排列在前面。...