從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--;
???? }
}