题解 | #全排列#
全排列
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'; } }