给定一个由不同的小写字母组成的字符串,输出这个字符串的所有全排列。
我们假设对于小写字母有 a<b<…<y<z
,而且给定的字符串中的字母已经按照从小到大的顺序排列。
输入格式
输入只有一行,是一个由不同的小写字母组成的字符串,已知字符串的长度在 1 到 6 之间。
输出格式
输出这个字符串的所有排列方式,每行一个排列。
要求字母序比较小的排列在前面。
输入样例:
abc
输出样例:
abc
acb
bac
bca
cab
cba
#include<iostream>
#include<algorithm>
using namespace std;
const int N = 10;
string str;
string ans;
bool s[N];
void dfs(string a,int n)
{
if(n == a.size()) {cout << ans << endl ;return;}
for(int i = 0 ; i < a.size() ; i++)
{
if(! s[i])
{
s[i] = true;
ans += a[i];
dfs(a,n+1);
s[i] = false;
ans.pop_back();
}
}
}
int main()
{
cin >> str;
dfs(str,0);
return 0;
}