这才是面试官想要的答案。
#include<iostream>
#include<string>
#include<algorithm>
#include<map>
using namespace std;
string s;
map<string,int> mp;
void swap(char &x,char &y){
char temp=x;
x=y;
y=temp;
}
void dfs(int now){
if(now==s.size()){
mp[s]=1;
return ;
}
for(int i=now;i<s.size();i++){
swap(s[now],s[i]);
//cout<<"convert to:"<<s<<endl;
dfs(now+1);
swap(s[now],s[i]);
//cout<<"convert back:"<<s<<endl;
}
}
int main(){
cin>>s;
dfs(0);
for(auto i=mp.begin();i!=mp.end();i++){
cout<<i->first<<endl;
}
return 0;
} 


京公网安备 11010502036488号