leetcode_Permutations II _hard_暴力枚举法--回溯法
来源:互联网 发布:厦门大学网络教育 编辑:程序博客网 时间:2024/05/29 16:46
Given a collection of numbers that might contain duplicates, return all possible unique permutations.
For example,[1,1,2]
have the following unique permutations:[1,1,2]
, [1,2,1]
, and [2,1,1]
.
之前在算法竞赛那本书上有这样的题目,按照那种思路,代码按照题目格式以及自己的喜好写了下,可能有点乱:
class Solution {public: void permutation_print(vector<int> &num,vector<int> &oneRes,vector<int> &vis,vector<vector<int> > &res,int cur) { if(cur==num.size())//递归返回边界 { if(oneRes.size()>0) res.push_back(oneRes); return ; } else { int used,flag=0;// for(int i=0; i<num.size(); i++) { if(vis[i]==0 && (flag==0||num[i]!=used))//保证既不重复,也不会{1,1,1}这样的没有输出 { oneRes.push_back(num[i]); vis[i]=1; used=num[i]; flag=1; permutation_print(num,oneRes,vis,res,cur+1);//递归调用 oneRes.erase(oneRes.begin()+cur);//恢复状态 vis[i]=0;<span style="font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif;">//恢复状态</span> } } } } vector<vector<int> > permuteUnique(vector<int> &num) { vector<int> vis,oneRes; vector<vector<int> > res; vis.insert(vis.end(),num.size(),0);//初始化访问数组 sort(num.begin(),num.end());//一定要先进行排序 permutation_print(num,oneRes,vis,res,0); return res; }};
0 0
- leetcode_Permutations II _hard_暴力枚举法--回溯法
- Leetcode_permutations-ii
- Leetcode_Permutations II
- leetcode_Permutations II
- leetCode_Permutations II
- leetcode:暴力枚举法之Subsets II
- 暴力搜索------回溯法
- 8.2—暴力枚举法—Subsets II
- 8.4—暴力枚举法—Permutations II
- uva12113 暴力枚举+回溯递归
- 【回溯法】Permutations II
- ACMjava求解最大连续和的三种方法 暴力枚举,S前缀,回溯法
- 暴力枚举法总结
- 暴力枚举法总结
- 暴力枚举法专题
- 暴力求解-枚举法
- 暴力枚举法总结
- poj 3080 暴力法 KMP+暴力枚举
- 初次在Android上运行opencv app时,出现的错误,以及解决
- C/C++堆和栈的区别
- URIs, URLs, and URNs
- 树莓派(raspberry pi)学习4: 更改键盘布局
- IIS信息服务器&花生壳网站发布及总结
- leetcode_Permutations II _hard_暴力枚举法--回溯法
- 树状数组
- PyCharm 教程(五)断点 调试
- 数据库集群技术漫谈
- 服务器负载均衡的基本功能和实现原理
- Dome of Circus - UVa 1473 几何 凸包
- 常见的连续概率密度函数
- C++ 多重继承,虚析构确定
- 一个android列表的适配器数据异步加载的问题