#include <vector>
class Solution {
public:
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
*
* @param nums int整型vector
* @return int整型vector<vector<>>
*/
vector<vector<int>> ans;
void dfs(vector<int> nums, vector<int> v, vector<bool> flag)
{
if(v.size()==nums.size())
{
ans.emplace_back(v);
return;
}
for(int i=0; i<nums.size(); ++i)
{
if(!flag[i])
{
// 注意这里别写成flag[nums[i]]了,真是粗心
flag[i] = true;
v.emplace_back(nums[i]);
dfs(nums, v, flag);
flag[i] = false;
v.pop_back();
}
}
return;
}
vector<vector<int> > cow_permute(vector<int>& nums) {
// write code here
// 深度优先搜索
sort(nums.begin(),nums.end(),greater<int>());
int len = nums.size();
vector<bool> flag(len,false);
vector<int> v;
dfs(nums, v, flag);
return ans;
}
};