1. 程式人生 > >通過遞迴函式 輸出n個元素的所有子集

通過遞迴函式 輸出n個元素的所有子集

#include <iostream>
using namespace std;

template <typename T>
a為待處理的集合 flag為判斷是否輸出(1輸出 0不輸出) start和end為字面意思
void coutSubset(T a,int flag[],int start,int end );

int main()
{
    int flag[30];
    char a[30];
    int i=0;
    //輸入集合
    cin>>a[i];
    i++;
    while(cin.get()!='\n'&&i<30
){ cin>>a[i]; i++; } //呼叫coutSubset()方法輸出子集 coutSubset(a,flag,0,i); return 0; } template <typename T> void coutSubset(T a,int flag[],int start,int end ){ //flag設定完畢後輸出 然後返回上一級的呼叫 if(start==end){ cout<<"{"; for(int j=0;j<end;j++){ if
(flag[j]==1){ cout<<a[j]; } } cout<<"}"<<endl; //return 用於返回到呼叫該函式的函式中 return; } flag[start]=0; coutSubset(a,flag,start+1,end); flag[start]=1; coutSubset(a,flag,start+1,end); }