题解 | #所有的打乱情况#
所有的打乱情况
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> >();
};
回溯法生成字典序
查看5道真题和解析
