Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit 9848bca

Browse files
committed
2017.04.23 change
1 parent 5bd093f commit 9848bca

File tree

6 files changed

+134
-0
lines changed

6 files changed

+134
-0
lines changed

8.1.cpp

Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
//给一个数组没有重复数字,返回它所有的子数组(子数组非降序)//
2+
#include<iostream>
3+
#include<vector>
4+
#include<algorithm>
5+
#include<set>
6+
using namespace std;
7+
//深搜
8+
class Solution{
9+
public:
10+
vector<vector<int>> subsets(vector<int>& nums){
11+
set<vector<int>> result;
12+
vector<int> cur;
13+
subsets(nums,cur,result,0);
14+
vector<vector<int>> real_result;
15+
copy(result.begin(),result.end(),back_inserter(real_result));
16+
return real_result;
17+
}
18+
void subsets(vector<int>& nums,vector<int>& cur,set<vector<int>>& result,int step){
19+
if(step==nums.size()){
20+
result.insert(cur);
21+
return;
22+
}
23+
subsets(nums,cur,result,step+1);
24+
cur.push_back(nums[step]);
25+
subsets(nums,cur,result,step+1);
26+
cur.pop_back();
27+
}
28+
};
29+
30+
31+
32+
int main(){
33+
Solution s;
34+
vector<int> nums={1,2,2,3};
35+
auto result=s.subsets(nums);
36+
for(auto i:result){
37+
for(auto j:i)
38+
cout<<j<<' ';
39+
cout<<endl;
40+
}
41+
}
42+

8.2.cpp

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
//给一个数组(有重复),求所有的子数组(不能重复)//
2+
#include<iostream>
3+
#include<vector>
4+
#include<algorithm>
5+
using namespace std;
6+
//迭代
7+
class Solution{
8+
vector<vector<int>> subsetsWithDup(vector<int>& nums){
9+
sort(nums.begin(),nums.end());
10+
11+

8.3.cpp

Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
1+
//给一个数组,返回所有序列//
2+
#include<iostream>
3+
#include<vector>
4+
#include<algorithm>
5+
using namespace std;
6+
class Solution{
7+
public:
8+
vector<vector<int>> permutation(vector<int>& nums){
9+
sort(nums.begin(),nums.end());
10+
vector<vector<int>> result;
11+
do{
12+
result.push_back(nums);
13+
}while(next_permutation(nums.begin(),nums.end()));
14+
return result;
15+
}
16+
17+
template<typename Iterator>
18+
bool next_permutation(Iterator first,Iterator last){
19+
auto rfirst=reverse_iterator<Iterator>(last);
20+
auto rlast=reverse_iterator<Iterator>(first);
21+
auto cur=next(rfirst);
22+
while(*cur>*prev(cur)&&cur!=rlast)cur=next(cur);
23+
if(cur==rlast)return false;
24+
auto change=find_if(rfirst,cur,bind1st(less<int>(),*cur));
25+
swap(*change,*cur);
26+
reverse(rfirst,cur);
27+
return true;
28+
}
29+
};
30+
31+
int main(){
32+
Solution s;
33+
vector<int> nums={1,2,3,4};
34+
auto result=s.permutation(nums);
35+
for(auto i:result){
36+
for(auto j:i)
37+
cout<<j<<' ';
38+
cout<<endl;
39+
}
40+
}
41+
42+
43+
44+
45+

8.4.cpp

Whitespace-only changes.

8.5.cpp

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
//返回从1-n的k个数的所有组合//
2+
#include<iostream>
3+
#include<vector>
4+
#include<algorithm>
5+
using namespace std;
6+
class Solution{
7+
public:
8+
vector<vector<int>> combine(int n,int k){
9+
vector<vector<int>> result;
10+
vector<int> cur;
11+
dfs(result,cur,1,n,k);
12+
return result;
13+
14+
}
15+
void dfs(vector<vector<int>>& result,vector<int> cur,int index,int n,int k){
16+
if(cur.size()==k){
17+
result.push_back(cur);
18+
return;
19+
}
20+
if(n-index+1<k-cur.size())
21+
return;
22+
dfs(result,cur,index+1,n,k);
23+
cur.push_back(index);
24+
dfs(result,cur,index+1,n,k);
25+
cur.pop_back();
26+
}
27+
};
28+
int main(){
29+
Solution s;
30+
auto result=s.combine(4,2);
31+
for(auto i:result){
32+
for(auto j:i)
33+
cout<<j<<' ';
34+
cout<<endl;
35+
}
36+
}

8.6.cpp

Whitespace-only changes.

0 commit comments

Comments
 (0)