欢迎来到Cefler的博客
博客主页:那个传说中的man的主页
个人专栏:题目解析
推荐文章:题目大解析(3)
mycode:
class Solution {
public:
vector<vector<int>> ret;
vector<int> path;
bool check[7];//检查该位置是否被用过了,true说明被用过了
void dfs(vector<int>& nums)
{
if(nums.size()==path.size())//说明此时已经组成一个序列了
{
ret.push_back(path);
return;
}
for(int i = 0;i<nums.size();i++)
{
if(check[i]==false)//此时还没被用过
{
path.push_back(nums[i]);
check[i] = true;
dfs(nums);
//回溯清空现场,将dfs下层插入的元素pop掉
path.pop_back();
check[i] = false;
}
}
}
vector<vector<int>> permute(vector<int>& nums) {
dfs(nums);
return ret;
}
};