题解 | #全排列#DFS实现
全排列
https://www.nowcoder.com/practice/5632c23d0d654aecbc9315d1720421c1
#include <iostream>
#include <string>
#include <algorithm>
using namespace std;
const int N = 100;
bool visited[N];
char seq[N];
// dfs
void permutation(string str,int index){
// 如果递归的深度等于字符串的长度表示已经找到序列了
if(index == str.size()){
for(int i = 0;i < str.size();i ++){
cout << seq[i];
}
cout << endl;
}
// 排序
for(int i = 0;i < str.size();i ++){
if(visited[i]){
continue;
}
visited[i] = true;
seq[index] = str[i];
// 递归下一层,把原端点复位
permutation(str,index + 1);
visited[i] = false;
}
}
int main(){
string str;
while(cin >> str){
sort(str.begin(),str.end());
permutation(str,0);
cout << endl;
}
return 0;
}

查看14道真题和解析