給定乙個由不同的小寫字母組成的字串,輸出這個字串的所有全排列。 我們假設對於小寫字母有'a' < 'b' < ... < 'y' < 'z',而且給定的字串中的字母已經按照從小到大的順序排列。
輸入只有一行,是乙個由不同的小寫字母組成的字串,已知字串的長度在1到6之間。
輸出這個字串的所有排列方式,每行乙個排列。要求字母序比較小的排列在前面。字母序如下定義:示例1已知s = s1s2...sk , t = t1t2...tk,則s < t 等價於,存在p (1 <= p <= k),使得
s1 = t1, s2 = t2, ..., sp - 1 = tp - 1, sp < tp成立。
每組樣例輸出結束後要再輸出乙個回車。
複製
abc
複製
abccbaacbbac
bcacab
//全排列可以用dfs演算法(搜尋演算法)
#include#include#include#includeusing namespace std;
int len;
char s[1000];
char ans[1000];//表示輸出結果
bool mark[1000];
void dfs(int num)
for(int i=0;i}
}int main()
深度優先搜尋(DFS) 全排列
題目描述 對於自然數n 按字典序輸出由1 n組成的所有不重複的數字序列,每行乙個序列,每個數字之間有乙個空格。例子 輸出 1 2 2 1例子 輸出1 2 3 1 3 2 2 1 3 2 3 1 3 1 2 3 2 1 思路解析 猛一看上題跟dfs沒什麼關係,也沒有圖給我們搜尋,其實對於一道題,最難的...
DFS之全排列
c 實現 includeusing namespace std using std cout using std cin int n 3 int seat 3 三個位置,所放的數字先全部用0初始化 int mark 3 分別標記0,1,2三個陣列是否放置在了位置上,如已經放置值用1表示,沒放置用0。...
dfs全排列問題
全排列問題,不是計算全排列a,是把全排列列印出來,這也是dfs的一道入門題目,值得學習。問題 a 遞迴入門 全排列 題目描述 排列與組合是常用的數學方法。先給乙個正整數 1 n 10 例如n 3,所有組合,並且按字典序輸出 1 2 3 1 3 2 2 1 3 2 3 1 3 1 2 3 2 1 輸入...