递归方法,参考 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; }