/************************************************************************/
/* 数组生成的所有集合
*/
/************************************************************************/
#include<iostream>
#include<vector>
using namespace std;
vector<int> v;
void print()
{
for (vector<int>::iterator iter = v.begin(); iter != v.end(); iter++)
cout << *iter << " ";
cout <<endl;
}
//获取指定长度的数组生成的集合
void get_set(int array[], int start, int end, int number)
{
if (start >= end) return;
v.push_back(array[start]);
if (v.size() == number)
{
print();
v.pop_back();
get_set(array, start+1, end, number);
return;
}else if(v.size() < number)
{
get_set(array, start+1, end, number);
}
v.pop_back();
get_set(array, start+1, end, number);
}
//数组生成的所有集合
void get_all_set(int array[], int len)
{
for (int i = 0; i < len; i++)
get_set(array, 0, len, i+1);
}
int main()
{
int array[] = { 1, 2, 3, 4,5};
get_all_set(array, sizeof(array) / sizeof(int));
return 0;
}
/* 数组生成的所有集合
*/
/************************************************************************/
#include<iostream>
#include<vector>
using namespace std;
vector<int> v;
void print()
{
for (vector<int>::iterator iter = v.begin(); iter != v.end(); iter++)
cout << *iter << " ";
cout <<endl;
}
//获取指定长度的数组生成的集合
void get_set(int array[], int start, int end, int number)
{
if (start >= end) return;
v.push_back(array[start]);
if (v.size() == number)
{
print();
v.pop_back();
get_set(array, start+1, end, number);
return;
}else if(v.size() < number)
{
get_set(array, start+1, end, number);
}
v.pop_back();
get_set(array, start+1, end, number);
}
//数组生成的所有集合
void get_all_set(int array[], int len)
{
for (int i = 0; i < len; i++)
get_set(array, 0, len, i+1);
}
int main()
{
int array[] = { 1, 2, 3, 4,5};
get_all_set(array, sizeof(array) / sizeof(int));
return 0;
}