题解 | 全排列
#include <bits/stdc++.h>
using namespace std;
void fullsort(string pre,string s){
if(s.size()==1){
cout<<pre+s<<endl;
return;
}
for(int i=0;i<s.size();i++){
string nextPre=pre+s[i];
string x=s;
x.erase(i,1);
fullsort(nextPre, x);
}
}
int main(){
string s;
while(cin>>s){
fullsort("", s);
}
}
递归的思想就是调用了作用相同的函数,我们的核心是找到这个函数做了什么操作,对于求全排列的问题,那么对于前面的全排列,就是前面的已排状态与后面所有的全排列的组合,对于这个过程,每个头部字段,在每次进行的时候都会增加一个内容,然后对剩下的进行同样的操作,最后直到长度为1,得出唯一情况,结束。
查看30道真题和解析