递归方法,参考 https://blog.csdn.net/nicolelts/article/details/48661707
#include <iostream>
#include <algorithm>
using namespace std;
void permute(string s, int i) {
if (i >= s.size()) {
cout << s << endl;
return;
}
for (int j=i; j<s.size(); j++) {
swap(s[i], s[j]);
permute(s, i+1);
}
return;
}
int main(){
string s;
cin >> s;
sort(s.begin(),s.end());
permute(s,0);
}
另一种方法:
使用c++自带的STL全排列 坑点在于每个样例输出完都要换一行,但是如果你每次换一行的写,自测是不会通过的。所以不要管自测结果,直接提交。
https://blog.csdn.net/qian2213762498/article/details/79683905
#include<iostream>
#include<string>
#include<algorithm>
using namespace std;
int main(){
string str;
while(cin>>str){
sort(str.begin(),str.end());
do{
cout<<str<<endl;
}while(next_permutation(str.begin(),str.end()));
cout<<endl;
}
return 0;
}
京公网安备 11010502036488号