原題地址:牛客網
題目描述
給定一個由不同的小寫字母組成的字符串,輸出這個字符串的所有全排列。 我們假設對於小寫字母有'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成立。 每組樣例輸出結束後要再輸出一個回車。
示例1
輸入
abc
輸出
abc acb bac bca cab cba
分析:
用STL的全排列函數即可。坑點在於每個樣例輸出完都要換一行,但是如果你每次換一行的寫,自測是不會通過的。所以不要管自測結果,直接提交。
代碼:
#include<iostream>
#include<algorithm>
#include<string>
using namespace std;
int main()
{
string b;
while(cin>>b)
{
char a[7];
int h=b.length();
for(int i=0;i<h;i++)
{
a[i]=b[i];
}
sort(a,a+h);
do{
for(int i=0;i<h;i++)
{
cout<<a[i];
}
cout<<endl;
}while(next_permutation(a,a+h));
cout<<endl;
}
return 0;
}
2020.4.22