1 #include <stdio.h> 2 3 void print_subset(int n, int i) { // 打印{0, 1, 2, ..., n-1}的子集S 4 for(int j = 0; j < n; j++) 5 if(i&(1<<j)) printf("%d ", j); // 这里利用了C语言“非0值都为真”的规定 6 printf("\n"); 7 } 8 9 int main() { 10 int n = 5; 11 for(int i = 0; i < (1<<n); i++) // 枚举各子集所对应的编码 0, 1, 2, ..., 2n-1 12 print_subset(n, i); 13 return 0; 14 }
源码大部分是copy的(呵呵)
时间: 2024-10-13 18:54:19