1.全排列
#include<iostream>
#include<algorithm>
#include<vector>
using namespace std;
void permutation(vector<int> &arr, int k, int m){
if(k==m){
for(int i = 0; i<=m; ++i)
cout<<arr[i];
cout<<endl;
}
else
{
for(int i = k; i<=m; ++i){
swap(arr[i],arr[k]);
permutation(arr, k+1,m);
swap(arr[i],arr[k]);
}
}
}
int _tmain(int argc, _TCHAR* argv[])
{
int n,k;
while(cin>>n>>k){
vector<int> data(n);
for(int i = 0; i<n;++i){
cin>>data[i];
}
permutation(data, 0, n-1);
}
return 0;
}
2.子集
void get_allsubset1(vector<int> &arr,int n){
int end = (1<<n)-1;
cout<<"{ }"<<endl;
for(int k=1;k<=end;k++){
for(int i=0;i<n;i++)
if((1<<i)&k){
cout<<arr[i]<<" ";
}
cout<<endl;
}
}
int _tmain(int argc, _TCHAR* argv[])
{
int n,k;
while(cin>>n>>k){
vector<int> data(n);
for(int i = 0; i<n;++i){
cin>>data[i];
}
get_allsubset1(data,n);
}
return 0;
}