从m个数选择n个数(递归)
比如从数组 11,22,33,44,55,66中选取两个数,分别是 11-22,11-33,11-44,11-55,11-66,22-33·······。也就是按照数组中从左到右先选取一个元素,在右边剩下的数组中按照同样顺序选择一个元素。
代码如下:
int Stack[100];
int top = 0 ;
void traverse(int* pData,int len,int num)
{
if(num == 0) return;
for(int i = 0 ;i<len;i++)
{
stack[top++] = pData[i];//当前位置的元素入栈
if(num == 1)
{
for(int n = 0;n<top;n++)
{
printf("%d",stack[n]);
}
printf("\n");
}
else
{
traverse(pData+i+1,len-i-1,num-1);
}
top--;
}
}