位运算计算集合所有子集(包含空集)

void allaggr(int* a, int n) {
	int end;
	end = (1 << n) - 1;// 0 ~(2^n - 1) 号集合
	for (int i = 0; i <= end; i++) {
		printf(" {");
		for (int m = 0; m < n; m++) {
			if ( (i>>m)& 1) {//右移m位,并取最后一位,为1则输出第m位对应的值
				printf("%3d", a[m]);
			}
		}
		printf("} ");
	}
}
int main() {
	int a[10], n = 0;
	char x;
	while (~scanf("%c",&x)&&x!='\n'&&n<10) {
		a[n++] = x-48;
	}
	allaggr(a, n);
}

输入:一串不同数字(0~9);如:1345

输出: {}  {  1}  {  3}  {  1  3}  {  4}  {  1  4}  {  3  4}  {  1  3  4}  {  5}  {  1  5}  {  3  5}  {  1  3  5}  {  4  5}  {  1  4  5}  {  3  4  5}  {  1  3  4  5};

原理:集合内的数个数为n,则{0……0~1……1}各位置与集合各位置对应,为1则输出该位置,为0则不输出。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
11. 外延公理:外延公理是集合论中的一个基本公理,它表明两个集合相等当且仅当它们具有相同的元素。换句话说,集合的性质完全由其元素所决定。如果两个集合中的元素完全相同,那么这两个集合就是相等的。 12. 空集公理:空集公理是指存在一个集合,该集合包含任何元素,即没有任何东西属于该集合空集集合论中一个特殊的集合,它在其他集合的运算中起到重要的作用。 13. 成对公理:成对公理指出,给定两个集合,存在一个集合,该集合包含这两个给定集合作为元素。换句话说,对于任意两个集合A和B,存在一个集合{A, B},该集合中只有A和B这两个元素。 14. 并集公理:并集公理指出,给定一个集合,存在一个集合,该集合包含集合的所有元素。换句话说,对于任意一个集合A,存在一个集合B,其中的元素是A中所有元素的并集。 15. 幂集公理:幂集公理指出,给定一个集合,存在一个集合,该集合包含集合的所有子集。换句话说,对于任意一个集合A,存在一个集合B,其中的元素是A的所有子集。 16. 无穷公理:无穷公理指出,存在一个集合,该集合包含无穷多个元素。这个公理确保了集合论中存在无限集合的概念。 17. 选择公理:选择公理是集合论中的一个重要公理,它指出对于任意非空集合的集合族,存在一个函数,该函数可以从每个空集合中选择一个元素。选择公理在数学推理和证明中起到重要作用。 18. 分离公理:分离公理指出,对于给定的集合和一个性质,存在一个子集,该子集包含满足该性质的元素。分离公理允许我们根据特定的性质从一个集合中筛选出符合条件的元素,从而构造新的子集。 19. 替换公理:替换公理指出,对于给定的集合和一个映射关系,存在一个集合,该集合由原集合中的元素经过映射关系得到。替换公理允许我们通过映射关系将集合中的元素转换为另一个集合中的元素,从而构造新的集合。 20. 基础公理:基础公理指出,每个空集合都至少有一个与其互不相交的元素。基础公理确保了集合论中个体集合的存在,即每个集合包含至少一个独立的元素。这个公理在构建集合的层次结构时起到重要作用。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值