#include <stdio.h>
#define MAX 20
void comb_origin( int a[], int b[], int n, int m, const int M, int *count)
{
int i,j;
for(i = n; i>=m; i--)
{
b[m-1] = i - 1;
if(m > 1)
comb_origin(a, b, i-1, m-1, M, count);
else
{
for(j = M-1; j>=0; j--)
printf("%d ",a[b[j]]);
printf("\n");
(*count)++;
}
}
}
int combine(int A[], int N, int M)//从A中N个元素中取M个
{
int B[MAX];
static int Count = 0;
comb_origin(A, B, N, M, M, &Count);
return Count;
}
int main()
{
int set[9] = {1,2,3,4,5,6,7,8,9};
int c = combine(set,9,5); //从集合set中的9个元素里选5个元素的组合
printf("\n 共%d组 \n",c);
system("PAUSE");
return 0;
}