<span style="font-size:18px;">/**
* @author johnsondu
* @problem [leetcode] Permutations
* @description A simple implementation of STL Generic Algorithm(next_permutation)
* @time 2015.09.08 15:00
* @strategy dfs
* @url https://leetcode.com/problems/permutations/
*/
class Solution {
public:
void dfs(vector<vector<int>>& ans, vector<int> &tmp, vector<int>& nums, int cnt, int len, bool mark[]) {
if(cnt == len) {
ans.push_back(tmp);
return;
}
for(int i = 0; i < len; i ++) {
if(!mark[i]) {
mark[i] = true;
tmp.push_back(nums[i]);
dfs(ans, tmp, nums, cnt + 1, len, mark);
mark[i] = false;
tmp.pop_back();
}
}
}
vector<vector<int>> permute(vector<int>& nums) {
const int len = nums.size();
bool *mark = new bool(len);
memset(mark, false, sizeof(mark));
vector<vector<int>> ans;
for(int i = 0; i < len; i ++) {
vector<int> tmp;
tmp.push_back(nums[i]);
mark[i] = true;
dfs(ans, tmp, nums, 1, len, mark);
tmp.pop_back();
mark[i] = false;
}
delete mark;
return ans;
}
};</span>
【leetcode】 Permutations 一个简单next_permutation的实现
最新推荐文章于 2019-02-07 16:08:52 发布