暴力枚举
wnjason
这个作者很懒,什么都没留下…
展开
-
LeetCode---Next Permutation
题目大意:给出一个排列,求出它的下一个排列,如果不存在则返回升序的排列。算法思想:直接使用next_permutation()算法。代码如下:class Solution {public: void nextPermutation(vector& nums) { if(nums.size()==0) return ; next_permut原创 2015-11-16 20:07:05 · 243 阅读 · 0 评论 -
LeetCode---Subsets II
题目大意:给出一个数组,数组中可能包含重复元素,列出其所有的子集合,要求子集合中的元素给递减排列且子集合不能够重复。算法思想:1.算法整体思想如LeetCode---Subsets2.之后利用set的特性取出重复的子集合即可。代码如下:class Solution {public: vector> subsetsWithDup(vector& nums) {原创 2015-11-16 18:11:40 · 313 阅读 · 0 评论 -
LeetCode---Subsets
题目大意:给出一个数组,列出所给数组的所有子集合,要求子集合中的元素非降序排列。算法思想:1.根据数组的规模计算出子集合的个数sub_count。2.由于要使子集合中的元素非降序排列则将原始数组排序。3.将每个子集合编号赋值范围为0~sub_count-1,将编号值转化为其二进制表示,对应原数组中的每个元素如果二进制位为1则将其放入子集合中(如000对应的子集合为[])。将每个编号原创 2015-11-16 16:39:16 · 345 阅读 · 0 评论 -
LeetCode---Combinations
题目大意:给出两个整数n和k,找出从1~n中包含k个数的所有组合。算法思想:1.计算出1~n个元素构成集合的所有子集合的个数subset_nums。2.将每个子集合用0~subset_nums进行编号,将该编号表示成二进制形式。3.找出出每个编号中二进制位数为1的个数等于k的编号。4.然后遍历这些编号的二进制将对应位为1元素放入集合中。5.将每个找出的子集合放入结果集中。原创 2015-11-17 11:39:35 · 260 阅读 · 0 评论