1. 程式人生 > >輸出陣列的全部組合

輸出陣列的全部組合

採用遞迴的思想。

#include<stdlib.h>

#include<iostream>
#include<stdio.h>
using namespace std;
void combine(int arr[],int data[],int start,int end,int index,int r)
{
    if(index==r)
    {
        for(int i=0;i<r;i++)
            {cout<<data[i];}
        cout<<endl;
        return;
    }
    if(start+(r-index)>end)
        return;
    data[index]=arr[start];
    combine(arr,data,start+1,end,index+1,r);
    combine(arr,data,start+1,end,index,r);


}


int main() {
int arr[] = {1,2,3,4,5};
int r = 2;
int * data = new int[r];
int n=sizeof(arr)/sizeof(arr[0]);
combine(arr,data,0,n,0,1);
combine(arr,data,0,n,0,2);
combine(arr,data,0,n,0,3);
combine(arr,data,0,n,0,4);
combine(arr,data,0,n,0,5);
return 0;
}