离散数学 8.1.2子集(C语言)

【头歌educoder】离散数学实训参考-第一章-集合 python搭建自然数系统--头歌离散数学 阅读详情

[问题描述]

给定一个集合A,求A的所有非空子集。例如A={a,b}时,则它的所有非空子集为{a},{b},{a,b}。集合A不空,并且A的元素个数不超过10个。

[输入]

有多组测试数据,每组测试数据为一行。
每行表示一个集合,集合由一对大括号括起来,集合之间的元素用一个逗号隔开。之间没有任何的空白字符。已经知道集合元素按字典顺序排列。

[输出]

每组测试数据输出为2^n-1行,每行表示一个非空子集。子集与子集的顺序参考输出样列。(对应的二进制由小到大)
每个子集的元素按字典顺序排列,元素之间用逗号隔开,没有任何的空白字符。子集由一对大括号括起来。

 

[输入样列]

{a,b,c}

[输出样例]

{a}
{b}
{a,b}
{c}
{a,c}
{b,c}
{a,b,c}

解题思路:

一开始思路不正确,换了两次思路,写到最后都发现太复杂 ,最后想到了这个方法,耗时将近两个小时:

我发现输出样例很像二进制编码

假设{a}是10000

{b}可以看成是10000+1=01000(从左往右进位,这样方便数组累加)

{a,b}就是01000+1=11000

{c}就是11000+1=00100(也就是说这个二进制数第一位对应a,如果该位是1的话,就要输出a,第二位对应b,以此类推)

这串二进制数最长是26位,对应26个字母

 

代码如下: 

 

#include<stdio.h>
#include<string.h>
int main(){
	char ch[27]; 
	char ch1[81];
	int i,j,k,s,flag;
	gets(ch1);
	s=0;
	for(i=0;ch1[i]!='\0';i++){//把字母单独提取出来,存进ch数组中 
		if(ch1[i]>='a'&&ch1[i]<='z'){
			ch[s]=ch1[i];
			s++;
		}
	}
	ch[s]='\0';
	int sum=1;
	for(i=0;i<strlen(ch);i++){//计算一共要输出几行 
		sum*=2;
	}
	sum--;
	int n=0;
	ch[s]='\0';
	int cnt[26]={0};//二进制编码串 
	while(1){
		cnt[0]++;
		n++;
		if(n>sum){
			break;
		}
		for(i=0;i<26;i++){//按照二进制的规则进位 
			if(cnt[i]>=2){
				cnt[i]=0;
				cnt[i+1]++;
			}
		}
		printf("{");//把每次进位的结果对应ch数组输出 
		flag=1;
		for(i=0;i<strlen(ch);i++){
			if(cnt[i]){
				if(flag){
					flag=0;
					printf("%c",ch[i]);
				}
				else{
					printf(",%c",ch[i]);
				}
			}
		}
		printf("}\n");
		
	}
	return 0;
}

 

离散数学:数学语言与证明方法(练习题) 离散数学数学语言与证明方法的相关练习题 阅读详情

相关推荐

【梳理】离散数学 第6章 集合代数 6.1 集合 6.2 集合的运算

教材:《离散数学》第2版 屈婉玲 耿素云 张立昂 高等教育出版社 源文档高清截图在最后 第6章 集合代数 6.1 集合 1、集合是不能精确定义的基本概念。直观来讲,把一些事物汇集到一起组成整体就叫集合。这些事物称为集合的元素或成员。例如:平面上的所有点的集合;26个英文字母的集合;自然数集N、整数集Z、有理数集Q、实数集R、复数集C等。 表示集合的方法有列元素法,如:A = {a,b,c} 以及谓...

COFACTOR 3130

列出一个集合的所有非空子集

整体思路 description: 我们先看一个例子 A={a, b ,c ,d} 非空子集有 {a}      |-->{a, b ,c }-->{a, b ,c ,d} {a, b}-->|      |-->{a, b ,d}   {a, c}-->{a, c ,d} {a, d} {b}      {b, c}-->{b ,c ,d} {b, d}

三月软件工作室--任忌 5230

离散数学之集合论(上)

离散数学之集合论 文章目录离散数学之集合论使用的书籍写作的目的集合概念集合的基本性质集合的表示枚举法叙述法归纳法递归指定集合法文氏图解法集合和元素的关系集合与集合的关系几个特殊的集合 使用的书籍 《离散数学及其应用》(第3版)傅彦等编著。 写作的目的 为了记录学习离散数学的过程。写下自己理解的离散数学,就是为了边学习边记录就比较有意思。个人水平有限,文章中有错误的地方,大家可以指出来。然后我主要写的也是我理解的,课本上的带一下就行,如果把课本上的也写下来,那你还不如直接看课本。 集合 英文单词是se

Cukor丘克的博客 1536

求集合元素的所有非空子集

现有一个包含N个元素的集合S,求集合S的所有非空子集? 例如:集合S包含三个元素{a, b, c},则它的所有非空子集为: {a}, {b}, {c}, {a, b}, {a, c}, {b, c} 和{a, b, c}。 这里先用位操作的思路来求解,具体方法:用2进制Bit位来标记集合中的某个元素是否被选中,1代表选中,0代表未选中。例如集合{a, b, c}的所有子集可如下表示: {

marho 7548

自考《离散数学》题型总结

自考《离散数学》题型总结

ww981580010的博客 4862

离散数学与算法基础练习题合集

本文整理了涵盖集合运算、命题逻辑、关系推理、算法设计与分析、数学归纳法证明等多个离散数学核心主题的练习题,包含详细解答。内容涉及逻辑表达式转换、递归算法实现、时间复杂度分析、递推公式求解以及数学证明方法等,适用于计算机科学基础学习与复习。

3a9bq4r8t2y的博客 1146

教你如何求一个集合的所有非空子集的方差和

/题目: 注:要求提交程序源代码和执行结果,编程语言不限。 1.对于一个大小为n的数集,求出该数集的每个"非空子集"的方差之和对10°+7取模的结果。 附件1说明:第一行一个正整数口表示集合大小,第二行几个整数表示集合中的元素。/ /求集合的所有子集的算法(1): 对于任意集合A,元素个数为n(空集n=0),其所有子集的个数为2^n个 如集合A={a,b,c},其子集个数为8;对于任意一个元素,在每个子集中, 要么存在,要么不存在,对应关系是: a->1或a->0 b->1或b->0

qq_45707166的博客 1620

离散数学知识汇总

{1,2,3,4,5,6,7,8}中, 只对第 1 个元素是第 2 个元素的因数的序偶感兴趣,即只对R={,,,,,, ,, ,, , , ,,,,,A(x)∨﹁A(x),∀xA(x) ∨﹁∀ xA(x)可看成 p ∨﹁ p 的代换实例,A(x) ∧﹁A(x),∀xA(x) ∧﹁ ∀x A(x)可看成 p ∧﹁ p 的代换实例。

qq_67692062的博客 1484

离散数学拾趣(三):集合的子集有多少个

集合广泛应用于计数问题,这类问题需要讨论集合的大小。 令S为集合。若S中恰有n个不同的元素,n是非负整数,就说S是有限集合,而n是S的基数,用|S|表示。若S={ 1, 2, 3 },则|S| = 3。 有时候需要考虑一个集合的元素所有可能的组合,看它们是否具有某种性质。为此构造一个新的集合,它以S的所有子集作为它的元素,该集合称为S的幂集合,记为P(S)。 比如: 本文的主题也就是:对于...

weixin_33961829的博客 798

离散数学高教版习题解答精要

集合是数学中的一个基本概念,由不同元素组成的整体,这些元素可以是任何事物,包括数字、人物、文字或其他集合。集合中的元素必须是明确区分的,即对于任一对象,该对象要么属于该集合,要么不属于该集合,不存在模棱两可的情况。集合通常用大写字母表示,如集合A、B、C等,而集合中的元素则用小写字母表示。如果x是集合A的一个元素,我们用符号 (x \in A) 表示;如果x不是集合A的元素,则用符号 (x \notin A) 表示。

weixin_30923011的博客 1147

STM32cube HAL库两条命令实现i2c通信---Nucleo L476RG用I2C实现tmp117模块温度读取并串口打印

Getting Started with STM32 - I2C Example

m0_54706625的博客 1832

【离散数学】1.2特殊集合与集合间关系

空集定义不含任何元素的集合叫做空集(empty set),记作∅\emptyset 空集可以符号化为∅={x|x≠x}\emptyset=\{x|x\not=x\}举例 设A={x|x∈R,x2<0}A=\{x|x\in R, x^2<0\},则A=∅A=\emptyset |∅|=0,|{∅}|=1|\emptyset|=0, |\{\emptyset\}|=1 空集是绝对唯一的 全集定义针对

中央单元 5935

强化学习 之 Actor Critic

简介 Actor Critic是一种结合体算法: (1)Actor 的前生是 Policy Gradients,这能让它毫不费力地在连续动作中选取合适的动作,而 Q-learning 做这件事会瘫痪; (2)Critic 的前生是 Q-learning 或者其他的 以值为基础的学习法,能进行单步更新,而传统的 Policy Gradients 则是回合更新,这降低了学习效率。 算法思想 Actor...

Test_tju的博客 812

总结 离散数学知识点

总结  离散数学知识点 第二章  命题逻辑 1.→,前键为真,后键为假才为假;—>,相同为真,不同为假; 2.主析取范式:极小项(m)之和;主合取范式:极大项(M)之积; 3.求极小项时,命题变元的肯定为1,否定为0,求极大项时相反; 4.求极大极小项时,每个变元或变元的否定只能出现一次,求极小项时变元不够合取真,求极大项时变元不够析取假; 5.求范式时,为保证编码不错,命题变元最好按

icepointLine的专栏 4万+

JetBrains Air:多Agent协同的IDE运行时架构解析

IDE智能编程正从单模型增强迈向多Agent协同范式。多Agent架构通过职责分离、上下文精简与运行时隔离,显著提升代码生成稳定性与合规性;其核心依赖轻量级嵌入式运行时(如ARL),支持AST级内存共享、eBPF安全拦截与毫秒级冷启动。该架构天然适配本地化部署、离线开发与高安全合规场景(如PCI-DSS、金融内网),并为Java/Python/TS等语言提供可扩展的规则驱动开发流水线。JetBrains Air正是这一技术路径的工程化落地代表。

weixin_30443075的博客 571

node-red 可视化探索

配置socket选择配置流程产生url。

weixin_44133581的博客 3413

离散路的数目的c语言编程实验,离散数学集运算C或C语言实验报告

离散数学课程研究报告: 12年级计算机班1年级: 鲍家zhen: 201212201401016实验结果: 1.【实验主题】命题逻辑实验4 2. [实验目的]掌握用计算机计算集合的交,并,差和补运算的方法. 3. [实验内容]编程实现集合的交,并,差和补运算. 4. [实验要求]表示一个集合. 假设A = {1,3,4,5,6,7,9,10},B = {2,3,4,7,8,10},输入数组A...

weixin_39820588的博客 389

【深度学习|地学应用】MODIS AOD产品和HYSPLIT模型的局限性和不确定性?

【深度学习|地学应用】MODIS AOD产品和HYSPLIT模型的局限性和不确定性?

985小水博的摸鱼日常 463

离散数学期末考试必考知识点

3、集合的子集关系与属于关系必考。 需要注意的是,对于任意一个集合来说,他的空集属于他的真子集,而不是属于关系; 集合里面叠加集合处理方法抽丝剥茧即可,逻辑简单; 集合可能与幂集结合起来,了解幂集的写法:

henu_GM的博客 8803

【数据同化第一期】基本概念介绍

【数据同化第一期】基本概念介绍

WW、forever的博客 1904

使用Qt Creator自带的Qt Designer构造UI界面流程总结

在本文中,我们将总结使用Qt Creator自带的Qt Designer构造UI界面的流程。在对话框中,您可以选择一个控件的信号,然后将其连接到另一个控件的槽。例如,您可以将按钮的点击信号连接到一个槽函数,以响应按钮的点击事件。右键单击窗口设计器中的空白区域,选择适当的布局管理器,如水平布局、垂直布局或网格布局。在Qt Designer中,您可以使用各种预定义的UI控件来设计应用程序的界面。现在,您可以在应用程序的源代码中使用生成的UI界面。在您的源文件中,包含相应的头文件,然后创建一个UI界面的实例。

cl6789的博客 1394

离散数学实验——求幂集

简单的一个离散数学小实验,希望对你有帮助。

Sdom_L的博客 1052

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

离散数学第一章(知识点总结)

提前用电子科大的视频预习了下离散数学,感觉知识点很杂,总结了下发到上面~有需要的自取 如果有需要电子版的可以评论哈 1.集合的数学符号: 用带或不带下标的大写英文字母表示集合:A,B,C,... 用带或不带下标的小写英文字母表示元素:a,b,c,.... 2.常用集合 自然数集合N 整数集合Z 有理数集合Q(有理数是整数(正整数、0、负整数)和分数的统称) 实数集合R(有理数和无理数的总称) 3.属于关系 a是集合A中的元素:a∈A a不是集合A中的元素:a∉A 4.表示方法 ..

Joyce_Huuuuu的博客 2848

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

离散考试题计算机,离散数学试题及答案_离散数学试题库_离散数学试卷及答案...

离散数学试题及答案一、填空 20% (每小题2分)1、 P:你努力,Q:你失败。“除非你努力,否则你将失败”的翻译为“虽然你努力了,但还是失败了”的翻译为。2、论域D={1,2},指定谓词P则公式?x?yP(y,x)真值为。2、 设S={a1 ,a2 ,?,a8},Bi是S的子集,则由B31所表达的子集是。3、 设A={2,3,4,5,6}上的二元关系R?{?x,y?|x?y?x是质数},则R=(...

weixin_35683330的博客 1593

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

离散数学考前攻略

第三章 集合与关系 集合的概念:把具有相同性质的不同对象的全体称为集合。 集合的特性:互异性,无序性 集合间的关系:包含,相等, 全集,空集 幂集:有一个集合所有子集构成的集合 真子集个数为2^n-1个 第二题有2个元,即有2^2个子集 集合的运算 交,并,补,对称差 补集A-B,就是把A中属于B的部分挖去。 对称差,就是把A和B的交集挖去剩下的集合 tips 序偶 概念:具有固定次序的客体ab组成的有序序列, 次序不同序偶也是不同的 笛卡尔积,两个集合中的元素分别作为序偶的第

qq_45845771的博客 5013
上一篇: 离散数学 8.1.3 A-B(C语言)
下一篇: C语言:离散数学8.1.8 Fibonacci数列
阳青
博客等级 码龄7年 51粉丝 61原创
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值