AcWing 3429. 全排列
原题链接
简单
/*新手小白刷了几道DFS的简答题,终于有一点点的感觉了,
DFS深度优先遍历,可用于处理排列问题,按位置枚举所有可能性,递归处理每个位置,
按照不同的题目要求,再白能力结点的时候,会有不同的if条件筛选,
找到符合条件的结点,加入结果,并更新状态,
进行回溯,并记得恢复结点状态,以便后续其他情况对该结点的使用
并给出递归结出口,比方所有位置列举完毕,是一种情况的结束
感觉很像人的暴力枚举过程*/
#include <iostream>
#include <cstring>
using namespace std;
const int N=10;
string start;
char ans[N];
int n;
bool st[N];
void dfs(int x){
if(x==n){
for(int i=0;i<n;i++){
cout<<ans[i];
}
cout<<endl;
return;
}
for(int i=0;i<n;i++){
if(!st[i]){
ans[x]=start[i];
st[i]=true;
dfs(x+1);
st[i]=false;
}
}
}
int main(){
cin>>start;
n=start.size();
dfs(0);
return 0;
}