算法-从m个数选择n个数(递归)


从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--;


     }

}

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容