题解 | #全排列#
全排列
https://www.nowcoder.com/practice/5632c23d0d654aecbc9315d1720421c1
这个题目用的算法叫回溯算法,是有一个比较固定的模板的,推荐大家去b站搜“代码随想录”,他讲的比较透彻。
#include <bits/stdc++.h>
#include <vector>
using namespace std;
vector<string> ans;
string path;
void backtracking(string std, vector<bool> used){
if(path.size() == std.size()){
ans.push_back(path);
return;
}
for(int i = 0 ; i < std.size() ; i++){
if(used[i]) continue;
used[i] = true;
path += std[i];
backtracking(std, used);
path.erase(path.size() - 1 , 1);
used[i] = false;
}
}
int main() {
string std;
cin >> std;
vector<bool> used(std.size(), false);
backtracking(std, used);
for(int i = 0; i < ans.size() ; i++){
cout << ans[i] << '\n';
}
}
