题解 | #所有的打乱情况#
所有的打乱情况
https://www.nowcoder.com/practice/ebf1466cc6e045c0859c92b3bb3a161c
#include <algorithm> #include <vector> class Solution { public: /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param original int整型vector * @return int整型vector<vector<>> */ vector<vector<int> > getAllShuffles(vector<int>& original) { // write code here a = original; visit.reserve(a.size()); sort(a.begin(), a.end()); dfs(0); return ans; } // 选择第 i 位的数字 void dfs(int i) { if (i == a.size()) { ans.push_back(path); return; } for (int j = 0; j < a.size(); ++j) { if (visit[j]) continue; visit[j] = true; path.push_back(a[j]); dfs(i + 1); path.pop_back(); visit[j] = false; } } vector<int> a; vector<bool> visit = vector<bool>(); vector<int> path = vector<int>(); vector<vector<int> > ans = vector<vector<int> >(); };
回溯法生成字典序