求从M个数中娶N个数的组合,N<=M. 采用递归算法实现。
//从M 个数中取 N 个数的组合
void enumkind(int value[], int M, int N, int result[], int constant)
{
for(int i = M; i >= N; i--)
{
result[N - 1] = value[i - 1];
if (N > 1)
{
enumkind(value, i - 1, N - 1, result, constant);
}
else
{
for(int j = constant - 1; j >= 0; j--)
{
printf("%d ", result[j]);
}
printf("\n");
}
}
}
int _tmain(int argc, _TCHAR* argv[])
{
int value[4] = {1,2,3,4};
int length = 4;
int result[10];
enumkind(value, 4, 2, result, 2);
getchar();
return 0;
}