Method 1:
采用二进制编码以表示是否出现在集合里。
#include <stdio.h> #include <string.h> #include <math.h> void fun(int num, int bin[]) { ///十进制转化二进制 int i = 0,j; for (j = 0; j < 3; j++) bin[j] = 0; while (num >= 1) { bin[i] = num % 2; num /= 2; i++; } } int main() { char str[] = "abd"; int bin[3]; int num = pow(3, 2) - 2; int i, j; for (i = 0; i <= num; i++) { fun(i, bin); for (j = 0; j < 3; j++) if (bin[j] == 1) printf("%c", str[j]); putchar('\n'); } return 0; }
在实现过程中出现了一个基础错误:只有在数组初始化时才能 arr = { 0 }///伪码
若想全部赋值为 0, 只能历遍数组。
Method 2
利用递归穷举,待研究。