/***********************************************/
/**********功能:数组的组合数*****************************/
/**********时间:2015 3 13**************************/
/**********作者:xiaozhi xiong*****************/
/*************************************************/
#include<iostream>
#include"stdlib.h"
#include <vector>
using namespace std;
vector <int> p;
void Combanation(int a[],int len);
/***********************************************/
/**********k个数的组合*****************************/
/**********input1:数组的头指针*****************/
/**********input2:进栈的指针位置*****************/
/**********input3:数组的长度*********************/
/**********input4:组合的组成位数*****************/
/**********返回:空*****************/
void GetCombanationOfK(int a[],int i,int len,int k)
{
int b;
if(i>=len+1)
return;
if(k==-1)
{
for(vector<int>::iterator m = p.begin(); m != p.end(); m++ ) //用迭代器的方式输出容器对象的值
{
printf("%d ",*m);
}
printf("\n");
}
else
{
p.push_back(a[i]);
GetCombanationOfK(a,i+1,len,k-1);
p.pop_back();
GetCombanationOfK(a,i+1,len,k);
}
}
/***********************************************/
/**********数组的组合*****************************/
/**********input1:数组的头指针*****************/
/**********input2:数组的长度*****************/
/**********返回为空*****************************/
void Combanation(int a[],int len)
{
int i;
for(i=0;i<len;i++)
{
GetCombanationOfK(a,0,len,i);
}
}
int main(void){
int a[10]={1, 2, 3, 5, 4, 7};
Combanation(a,6);
system("pause");
return 0;
}