[[],[1],[1,2],[1,2,3],[1,3],[2],[2,3],[3]]
濡傛灉鐢–璇█姹傝В錛屽湪CSDN涓婃壘鍒板埆浜虹殑浠g爜濡備笅
1 #define N 4
2 #include <stdio.h>
3 int used[N]={0};//鍔犱笂
4
5 void output()
6 {
7 int i;
8 for(i=0;i<N;i++)if(used[i])printf("%d ",i+1);
9 printf("\n");
10 }
11
12 void f(int i)
13 {
14 if(i>=N)
15 {
16 output();
17 return;
18 }
19 f(i+1);
20 used[i]=1;
21 f(i+1);
22 used[i]=0;//鍔犱笂
23 }
24
25 void main()
26 {
27 f(0);
28 getchar();
29 }
濡傛灉鏄疕askell鍛紵錛堜笉鍖呮嫭絀洪泦錛?br />
1 subsets :: [a] -> [[a]]
2 subsets [x] = [[x]]
3 subsets (x:xs) = [x] : [x:i|i<-s]++ s
4 where s = subsets xs
闄ゅ幓澹版槑灝變笁琛岃繕鍙互緙╁噺鍒?琛屻備笖鍚箟娓呮銆侶askell鏋滅劧鏄竴涓爺絀剁畻娉曟渶濂界殑璇█銆?br />

]]>