题解 | 全排列
#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,得出唯一情况,结束。