问题描述:
https://leetcode.cn/problems/permutations/
解决思路
使用check[]数组来判断是否走过,如果走过的话就跳到下一个数
代码:
class Solution {
vector<vector<int>> ret;
vector<int> path;
bool check[10];
int n;
public:
void dfs(vector<int>& nums){
if(n == path.size()){
ret.push_back(path);
return;
}
for(int i = 0;i < n; i++){
if(!check[i]){ //只有没使用过的才能用
check[i] = 1; //将要遍历的设置成1
path.push_back(nums[i]); //放入遍历路径中
dfs(nums); //寻找下一个
path.pop_back(); //恢复现场
check[i] = 0;
}
}
}
vector<vector<int>> permute(vector<int>& nums) {
n = nums.size();
dfs(nums);
return ret;
}
};