1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50
| #include <cstdio> #include <cstring> #include <cstdlib> #include <algorithm> #include <cctype> using namespace std;
int n = 4;
void print_subset(int *vis, int *a, int cur) { if(cur == n){ for(int i = 0; i < n; i++) if(vis[i]){ printf("%d ", a[i]); } printf("\n"); return ;
} vis[cur] = 1; print_subset(vis, a, cur + 1); vis[cur] = 0; print_subset(vis, a, cur + 1); }
int main() { int vis[4] = {0}; int a[4] = {1,2,3,4}; print_subset(vis, a, 0); return 0; }
输出: 1 2 3 4 1 2 3 1 2 4 1 2 1 3 4 1 3 1 4 1 2 3 4 2 3 2 4 2 3 4 3 4
|