C语言所谓幂集(Power Set), 就是原集合中所有的子集(包括全集和空集)构成的集族。 输入一个整数n(0<=n<=10) 输出由整数1~n构成的集合{1,2,3,...,n}的幂集。
时间: 2023-06-28 14:07:05 浏览: 215
定理空集是一切集合的子集。-学习图论的预备知识
以下是一个基于递归的 C 代码实现:
```
#include <stdio.h>
void powerSet(int set[], int setSize, int index, int subset[], int subsetSize) {
if (index == setSize) {
printf("{ ");
for (int i = 0; i < subsetSize; i++) {
printf("%d ", subset[i]);
}
printf("}\n");
} else {
subset[subsetSize] = set[index];
powerSet(set, setSize, index + 1, subset, subsetSize + 1);
powerSet(set, setSize, index + 1, subset, subsetSize);
}
}
int main() {
int n;
printf("Enter n: ");
scanf("%d", &n);
int set[n];
for (int i = 0; i < n; i++) {
set[i] = i + 1;
}
int subset[n];
powerSet(set, n, 0, subset, 0);
return 0;
}
```
这个代码中,`powerSet` 函数是实现幂集的关键。它采用了递归的方式,对于每个元素,都有两种情况,一种是选择该元素,一种是不选择该元素。当处理完最后一个元素时,就输出当前的子集。
在 `main` 函数中,输入整数 `n`,初始化原集合 `set`,以及一个用于存储子集的数组 `subset`,并调用 `powerSet` 函数。
阅读全文