[讨论] 递归输出一个集合的所有子集
试编写一个递归函数,用来输出n 个元素的所有子集。例如,三个元素{a, b, c} 的所有子集是:{ }(空集),{a}, {b}, {c}, {a, b}, {a, c}, {b, c} 和{a, b, c}。
???.如何???
(第一章的,没做出来)
#include<iostream>
using namespace std;
void Set(char*, int, int);
void move(char*, int, int);
int main(){
char a[5] = {'a','b','c','d','e'};
Set(a,0,5);
system("pause");
return 0;
}
void Set(char *a, int l, int m){
static int n=m, f=l;
if(l == m)
for(int j=0; j<2; j++,l--){
cout<<"{ ";
for(int i=f; i<l; i++)
cout<<a[i];
cout<<" }\n";
}
else
for(int i=0; i<n-l; i++){
Set(a,l+1,m-i);
move(a,l,n);
}
}
void move(char *a, int m, int n){
char tmp = a[m];
for(int i=m; i<n-1; i++)
a[i] = a[i+1];
a[n-1] = tmp;
}[/CODE]
没仔细的试,不想再想了