实验一 传递闭包的实现(离散数学实验报告)

合集下载

传递闭包实验报告

传递闭包实验报告

一、实验目的1. 理解传递闭包的概念及其在图论中的应用。

2. 掌握利用Floyd-Warshall算法求解传递闭包的方法。

3. 通过编程实现传递闭包的计算,验证算法的正确性。

4. 分析实验结果,加深对传递闭包性质的理解。

二、实验原理传递闭包是指在给定集合X上的二元关系R,找到一个最小的传递关系R,使得对于任意的x, y, z∈X,若xRy且yRz,则xRz成立。

传递闭包可以用来描述图中节点之间的可达性,是图论中一个重要的概念。

Floyd-Warshall算法是一种求解传递闭包的经典算法,它通过构建一个n×n的邻接矩阵A,其中A[i][j]表示节点i到节点j的可达性。

算法的基本思想是:逐步更新矩阵A,使得A[i][j]的值表示节点i到节点j的最短路径可达性。

三、实验内容1. 设计一个图,包括节点和边,并构建相应的邻接矩阵。

2. 利用Floyd-Warshall算法计算邻接矩阵的传递闭包。

3. 分析传递闭包的结果,验证算法的正确性。

4. 对比不同图结构下的传递闭包计算结果,探讨传递闭包的性质。

四、实验步骤1. 设计一个图,包括5个节点和6条边,如下所示:```1 -- 2| || |3 -- 4| || |5 -- 6```2. 构建邻接矩阵A,如下所示:```| 1 2 3 4 5 6 |1| 0 1 0 0 0 0 |2| 0 0 1 0 0 0 |3| 0 0 0 1 0 0 |4| 0 0 0 0 1 0 |5| 0 0 0 0 0 1 |6| 0 0 0 0 0 0 |```3. 编写Floyd-Warshall算法的代码,计算传递闭包。

```pythondef floyd_warshall(adj_matrix):n = len(adj_matrix)for k in range(n):for i in range(n):for j in range(n):if adj_matrix[i][j] > adj_matrix[i][k] + adj_matrix[k][j]:adj_matrix[i][j] = adj_matrix[i][k] + adj_matrix[k][j]return adj_matrix# 初始化邻接矩阵adj_matrix = [[0, 1, 0, 0, 0, 0],[0, 0, 1, 0, 0, 0],[0, 0, 0, 1, 0, 0],[0, 0, 0, 0, 1, 0],[0, 0, 0, 0, 0, 1],[0, 0, 0, 0, 0, 0]]# 计算传递闭包transitive_closure = floyd_warshall(adj_matrix) print(transitive_closure)```4. 分析传递闭包的结果,验证算法的正确性。

离散数学实验报告

离散数学实验报告

“离散数学”实验报告目录一、实验目的 (3)二、实验内容 (3)三、实验环境 (3)四、实验原理和实现过程(算法描述) (3)1、实验原理........................................................................................................2、实验过程.......................................................................................................五、实验数据及结果分析 (13)六、源程序清单 (24)源代码 (24)七、其他收获及体会 (45)一、实验目的实验一:熟悉掌握命题逻辑中的联接词、真值表、主范式等,进一步能用它们来解决实际问题。

实验二:掌握关系的概念与性质,基本的关系运算,关系的各种闭包的求法。

理解等价类的概念,掌握等价类的求解方法。

实验三:理解图论的基本概念,图的矩阵表示,图的连通性,图的遍历,以及求图的连通支方法。

二、实验内容实验一:1. 从键盘输入两个命题变元P和Q的真值,求它们的合取、析取、条件和双条件的真值。

(A)2. 求任意一个命题公式的真值表(B,并根据真值表求主范式(C))实验二:1.求有限集上给定关系的自反、对称和传递闭包。

(有两种求解方法,只做一种为A,两种都做为B)2. 求有限集上等价关系的数目。

(有两种求解方法,只做一种为A,两种都做为B)3. 求解商集,输入集合和等价关系,求相应的商集。

(C)实验三:以偶对的形式输入一个无向简单图的边,建立该图的邻接矩阵,判断图是否连通(A)。

并计算任意两个结点间的距离(B)。

对不连通的图输出其各个连通支(C)。

三、实验环境C或C++语言编程环境实现。

四、实验原理和实现过程(算法描述)实验一:1.实验原理(1)合取:二元命题联结词。

离散数学实验报告()

离散数学实验报告()

《离散数学》实验报告专业网络工程班级姓名学号授课教师二 O 一六年十二月目录实验一联结词的运算实验二根据矩阵的乘法求复合关系实验三利用warshall算法求关系的传递闭包实验四图的可达矩阵实现实验一联结词的运算一.实验目的通过上机实验操作,将命题连接词运算融入到C语言的程序编写中,一方面加强对命题连接词运算的理解,另一方面通过编程实现命题连接词运算,帮助学生复习和锻炼C语言知识,将理论知识与实际操作结合,让学生更加容易理解和记忆命题连接词运算。

二.实验原理(1) 非运算, 符号: ,当P=T时,P为F, 当P=F时,P为T 。

(2) 合取, 符号: ∧ , 当且仅当P和Q的真值同为真,命题P∧Q的真值才为真;否则,P∧Q的真值为假。

(3) 析取, 符号: ∨ , 当且仅当P和Q的真值同为假,命题P∨Q的真值才为假;否则,P∨Q的真值为真。

(4) 异或, 符号: ▽ , 当且仅当P和Q的真值不同时,命题P▽Q的真值才为真;否则,P▽Q的真值为真。

(5) 蕴涵, 符号: →, 当且仅当P为T,Q为F时,命题P→Q的真值才为假;否则,P→Q 的真值为真。

(6) 等价, 符号: ↔, 当且仅当P,Q的真值不同时,命题P↔Q的真值才为假;否则,P→Q的真值为真。

三.实验内容编写一个程序实现非运算、合取运算、析取运算、异或运算、蕴涵运算、等价运算。

四.算法程序#include<stdio.h>void main(){printf("请输入P、Q的真值\n");int a,b;scanf("%d%d",&a,&b);int c,d;if(a==1)c=0;else c=1;if(b==1)d=0;else d=1;printf("非P、Q的结果为%d,%d\n",c,d);int e;if(a==1&&b==1)e=1;else e=0;printf("合取的结果为%d\n",e);int f;if(a==0&&b==0)f=0;else f=1;printf("析取的结果为%d\n",f);int g;if(a==1&&b==0)g=0;else g=1;printf("单条件的结果为%d\n",g);int h;if(a==b)h=1;else h=0;printf("双条件的结果为%d\n",h);}内容格式:新罗马,五号,行间距固定值18磅五.实验结果六.心得体会通过编程,学会了析取、合取、单条件连接词、双条件连接词的用法。

闭包运算的实验报告

闭包运算的实验报告

一、实验目的1. 理解闭包运算的概念及其在离散数学中的应用。

2. 掌握关系闭包运算(自反闭包、对称闭包、传递闭包)的求解方法。

3. 利用编程语言实现关系闭包运算,并分析实验结果。

二、实验内容1. 自反闭包运算:给定一个关系R,求出R的自反闭包R^。

2. 对称闭包运算:给定一个关系R,求出R的对称闭包R^s。

3. 传递闭包运算:给定一个关系R,求出R的传递闭包R^t。

三、实验环境1. 操作系统:Windows 102. 编程语言:Python3.73. 开发工具:PyCharm四、实验步骤1. 定义关系R:以矩阵形式表示关系R,其中R[i][j]表示元素i和元素j之间的关系,1表示存在关系,0表示不存在关系。

2. 求自反闭包R^:a. 初始化一个与R同样大小的矩阵R^。

b. 遍历R^,对于每个元素R^[i][j],若R[i][j]=1或i=j,则R^[i][j]=1。

3. 求对称闭包R^s:a. 初始化一个与R同样大小的矩阵R^s。

b. 遍历R,对于每个元素R[i][j],若R[i][j]=1,则R^[i][j]=1且R^[j][i]=1。

c. 遍历R^s,对于每个元素R^[i][j],若R^[i][j]=1,则R^[j][i]=1。

4. 求传递闭包R^t:a. 初始化一个与R同样大小的矩阵R^t。

b. 遍历R,对于每个元素R[i][j],若R[i][j]=1,则R^[i][j]=1。

c. 循环执行以下步骤,直到R^t不再变化:i. 遍历R^t,对于每个元素R^[i][j],若R^[i][k]=1且R^[k][j]=1,则R^[i][j]=1。

五、实验结果与分析1. 自反闭包运算:给定关系R如下:0 1 01 0 10 1 0求自反闭包R^,结果如下:1 1 11 1 11 1 12. 对称闭包运算:给定关系R如下:0 1 01 0 10 1 0求对称闭包R^s,结果如下:1 1 11 1 11 1 13. 传递闭包运算:给定关系R如下:0 1 01 0 10 1 0求传递闭包R^t,结果如下:1 1 11 1 11 1 1通过实验,我们可以发现:1. 自反闭包运算使得关系R中的所有元素都与自身存在关系。

离散数学试验报告

离散数学试验报告

学院理学院学生姓名 xxx学号 xxxxxxxxxxx实验:编程二元关系的传递性判别,二元关系闭包方法一.前言引语:二元关系是离散数学中重要的内容。

因为事物之间总是可以根据需要确定相应的关系。

从数学的角度来看,这类联系就是某个集合中元素之间存在的关系。

二.数学原理:1.传递关系:对任意的x,y,z∈A,如果<x,y>∈R且<y,z>∈R,那么<x,z>∈R,则称关系R是传递的,或称R具有传递性,即R在A上是传递的⇔ (∀x)(∀y)(∀z)[(x ∈A)∧(y∈A)∧(z∈A)∧((<x,y>∈R)∧(<y,z>∈R)→(<x,z>∈R))]=12.自反闭包、对称闭包、传递闭包:设R是定义在A上的二元关系,若存在A 上的关系R′满足:1)R′是自反的(或对称的、或可传递的),2)R⊆ R′,3)对A上任何其它满足1)和2)的关系R〞,都有:R′⊆R〞。

则称R′为R的自反闭包(或对称闭包、或传递闭包),分别记为r(R)、(s(R)和t(R))。

三.实验编程语言:c++四.实验程序源代码:#include<iostream>using namespace std;int cdx(int a[100][100],int n){int b[100][100],i,j;for(i=1;i<=n-1;i++){for(j=1;j<=n;j++){if(a[1][j]==a[i+1][j] && a[1][j]==0)b[i][j]=0;elseb[i][j]=1;}for(j=1;j<=n;j++){if(b[i][j]!=a[1][j])return 0;}}return 1;}void zfbb(int a[100][100],int n){int i,j;for(j=1;j<=n;j++){for(i=1;i<=n;i++){if(a[i][j]==1){a[i][i]=1;a[j][j]=1;}}}cout<<"自Á?反¤¡ä闭À?包㨹关?系¦Ì矩?阵¨®为a:êo"<<endl;for(i=1;i<=n;i++){for(j=1;j<=n;j++){if(a[i][j]>1){a[i][j]=1;cout<<a[i][j]<<" ";}else{cout<<a[i][j]<<" ";}}cout<<""<<endl;}}void dcbb(int a[100][100],int n){int i,j;for(j=1;j<=n;j++){for(i=1;i<=n;i++){if(a[i][j]==1){a[j][i]=1;}}}cout<<"对?称?闭À?包㨹关?系¦Ì矩?阵¨®为a:êo"<<endl;for(i=1;i<=n;i++){for(j=1;j<=n;j++){if(a[i][j]>1){a[i][j]=1;cout<<a[i][j]<<" ";}else{cout<<a[i][j]<<" ";}}cout<<""<<endl;}}void cdbb(int a[100][100],int n){int i,j,k;for(j=1;j<=n;j++){for(i=1;i<=n;i++){if(a[i][j]==1){for(k=1;k<=n;k++){a[i][k]=a[i][k]+a[j][k];}}}}cout<<"传ä?递ÌY闭À?包㨹关?系¦Ì矩?阵¨®为a:êo"<<endl;for(i=1;i<=n;i++){for(j=1;j<=n;j++){if(a[i][j]>1){a[i][j]=1;cout<<a[i][j]<<" ";}else{cout<<a[i][j]<<" ";}}cout<<""<<endl;}}void main(){int i,j,n,a[100][100],sel,ins;cout<<"请?输º?入¨?二t元a关?系¦Ì矩?阵¨®维?数ºyn"<<endl;cin>>n;cout<<"请?按ã¡äa[1,1],a[1,2]...a[1,n],a[2,1]...a[n.n]的Ì?顺3序¨©输º?入¨?关?系¦Ì矩?阵¨®的Ì?元a素?值¦Ì(ꡧ0,ê?1)ê?"<<endl;for(i=1;i<=n;i++)for(j=1;j<=n;j++){cin>>a[i][j];}INDEX:cout<<"请?输º?入¨?要©a判D定¡§的Ì?性?质¨º:êo"<<endl;cout<<"1、¡é传ä?递ÌY性?"<<endl;cout<<"2、¡é自Á?反¤¡ä闭À?包㨹"<<endl;cout<<"3、¡é对?称?闭À?包㨹"<<endl;cout<<"4、¡é传ä?递ÌY闭À?包㨹"<<endl;cout<<"5、¡é退ª?出?"<<endl;cin>>sel;if(sel==1){ins=cdx(a,n);if(ins==0)cout<<"该?二t元a关?系¦Ì不?具?有®D传ä?递ÌY性?。

离散数学实验报告四个实验

离散数学实验报告四个实验

《离散数学》课程设计学院计算机学院学生姓名学号指导教师评阅意见提交日期 2011 年 11 月 25 日引言《离散数学》是现代数学的一个重要分支,也是计算机科学与技术,电子信息技术,生物技术等的核心基础课程。

它是研究离散量(如整数、有理数、有限字母表等)的数学结构、性质及关系的学问。

它一方面充分地描述了计算机科学离散性的特点,为学生进一步学习算法与数据结构、程序设计语言、操作系统、编译原理、电路设计、软件工程与方法学、数据库与信息检索系统、人工智能、网络、计算机图形学等专业课打好数学基础;另一方面,通过学习离散数学课程,学生在获得离散问题建模、离散数学理论、计算机求解方法和技术知识的同时,还可以培养和提高抽象思维能力和严密的逻辑推理能力,为今后爱念族皮及用计算机处理大量的日常事务和科研项目、从事计算机科学和应用打下坚实基础。

特别是对于那些从事计算机科学与理论研究的高层次计算机人员来说,离散数学更是必不可少的基础理论工具。

实验一、编程判断一个二元关系的性质(是否具有自反性、反自反性、对称性、反对称性和传递性)一、前言引语:二元关系是离散数学中重要的内容。

因为事物之间总是可以根据需要确定相应的关系。

从数学的角度来看,这类联系就是某个集合中元素之间存在的关系。

二、数学原理:自反、对称、传递关系设A和B都是已知的集合,R是A到B的一个确定的二元关系,那么集合R 就是A×B的一个合于{()∈A×}的子集合设R是集合A上的二元关系:自反关系:对任意的x∈A,都满足<>∈R,则称R是自反的,或称R具有自反性,即R在A上是自反的⇔(∀x)((x∈A)→(<>∈R))=1对称关系:对任意的∈A,如果<>∈R,那么<>∈R,则称关系R是对称的,或称R具有对称性,即R在A上是对称的⇔ (∀x)(∀y)((x∈A)∧(y∈A)∧(<>∈R)→(<>∈R))=1传递关系:对任意的∈A,如果<>∈R且<>∈R,那么<>∈R,则称关系R是传递的,或称R具有传递性,即R在A上是传递的⇔ (∀x)(∀y)(∀z)[(x∈A)∧(y∈A)∧(z ∈A)∧((<>∈R)∧(<>∈R)→(<>∈R))]=1三、实验原理:通过二元关系与关系矩阵的联系,可以引入N维数组,以数组的运算来实现二元关系的判断。

离散数学计算机实验报告

离散数学计算机实验报告

《离散数学》实验一、实验目的《离散数学》是现代数学的一个重要分支,是计算机科学与技术专业的基础理论课,也是该专业的核心课程和主干课程。

“离散数学”是计算机专业一门重要的专业技术基础课程,是计算机专业的一门核心的关键性课程。

该课程一方面为后继课程如数据结构、编绎原理、操作系统、数据库原理、人工智能和形式语言与自动机等提供必要的理论基础;同时,更为重要的是培养学生的抽象思维能力和逻辑推理能力,为今后的学习和工作打好基础。

无论从计算机学科发展的过去、现在和未来看,《离散数学》都是计算机科学与技术专业不可缺少的重要组成部分。

这门课程有着其它课程不可替代的地位和作用,是一门承前启后的课程。

根据《离散数学》课程本身的理论性较强的特性,为了帮助学生更好地学习本课程,理解和掌握所学基本概念和方法,为整个专业学习打好基础,要求运用所学知识,上机解决一些典型问题,设置实践环节十分重要。

通过实验实践内容的训练,突出逻辑性思维训练的特征, 目的是学习离散数学中的基本算法和方法,掌握数理逻辑、关系和图论中的基本算法,提高学生学习的兴趣及实际动手的能力。

通过分析、设计、编码、调试等各环节的训练,使学生深刻理解、牢固掌握所学知识,培养分析、解决实际问题的能力。

二、实验要求掌握真值表技术,熟悉联结词合取、析取、条件和双条件的概念。

熟悉Warshall算法,掌握求关系的自反闭包、对称闭包和传递闭包的方法。

熟悉邻接矩阵和两结点间长度为m 的路的数目的关系。

熟悉最优树的构造算法,掌握最优树的构造过程。

实验前作好准备,分析问题并确定算法,设计代码。

做实验过程中认真分析和调试程序,记录并分析实验结果。

实验后完成实验报告,实验报告包括实验目的、实验内容、源程序、运行结果及分析。

可以使用C、VC或MATLAB完成实验。

实验题目包括真值计算、关系闭包计算、计算两结点间长度为m的路的数目、最优树的构造四个实验,每个实验要求2个学时完成。

三、实验设备及环境PC机一台,软件C、VC或MATLAB四、实验内容实验一真值计算1、实验目的熟悉五个常用联结词合取、析取、条件和双条件的概念,掌握真值表技术。

离散数学实验报告

离散数学实验报告

离散数学闭包实验报告专业12计算机科学与技术学号12407127姓名周谦益时间2011—11--15一、实验目的1.通过上机程序,进一步加深对关系中自反闭包,对称闭包,传递闭包的理解。

2.掌握Warshall算法。

3.学会用程序解决离散数学中的问题。

4.增强我们编写程序的能力。

二、实验内容求有限集上给定关系的自反、对称和传递闭包(用Warshall算法)。

三、实验环境我的实验是在Vs2008实验环境下完成的,而所设计的程序也在这个环境下通过了编译,运行和测试。

四、实验原理和实现过程设计思路在三种闭包中自反和对称闭包的求解很容易,对矩阵表示的关系,其自反闭包只要将矩阵的主对角线全部置为1就可;对称闭包则只需要将矩阵中数值为1的元素关于主对角线对称的元素数值也设为1就可以了;而对于传递闭包,用Warshall算法可以很方便的计算出来。

下面我就来具体分析一下每一种闭包运算的设计。

自反闭包的设计:我们只要把关系矩阵的对角线的元素全赋值为1就可以啦。

具体程序如下:求自反闭包的程序:int Relation::Reflexive()//求自反闭包的函数{for(int i=0;i<Len;i++)if(!R[i][i])return(0);return(1);};对称闭包的求法:对于对称闭包,我们只只需要将矩阵中数值为1的元素的对称位置的元素数值也设为1就可以了。

具体程序如下:对称闭包:int Relation::Symmetric()//对称闭包的函数{int i,j,K=Len-1;for(i=0;i<K;i++)for(j=i+1;j<Len;j++)if(R[i][j]!=R[j][i])return(0);return(1);};传递闭包设计:传递闭包我主要用Warshall算法来求。

书上的Walshall算法的伪代码如下:设R的关系矩阵为M(1)令矩阵A=M(2)置i=1(3)对所有的j,若A[j,i]=1,则对于 k=1,2,…,n,令A[j,k]=A[j,k]+A[i,k](4) i=i+l.(5)若i≤n,则转到(3),否则结束根据Warshall算法,我设计求出了关系的传递闭包,具体程序如下:int Relation::Transitive()//传递闭包函数{Relation t;t=C_t(1);for(int i=0;i<Len;i++)for(int j=0;j<Len;j++)if(R[i][j]!=t.R[i][j])return(0);return(1);};把上面的每个子函数串在一起,再加上主函数,就可以实现这次实验的要求。

离散数学实验报告

离散数学实验报告

离散数学实验报告————————————————————————————————作者:————————————————————————————————日期:ﻩ重庆交通大学学生实验报告实验课程名称离散数学开课实验室数学实验室学院理学院专业信息与计算科学学生姓名谭冰学号631122020212班级2班开课时间2011 至2012学年第二学期教师评语:总成绩教师签名ﻬ目录实验一:教材第17页习题(1)(b);教材第39页习题(4)(b)…………3.实验二:教材第127页习题(2)(b);教材第113页习题(2)(b)9ﻩ实验一(此实验包含两题)一、实验内容1.从键盘输入两个命题变元P和Q的真值,求它们的非,合取,析取,条件和双条件的真值。

2.求任意一个命题公式的真值表。

二、实验目的熟悉掌握命题逻辑中的联接词,真值表,主范式等,进一步能用它们来解决实际问题。

三、实验环境MATLAB软件的编程环境实现四、实现两题的算法与原理(教材第17页习题(1)(b),39页习题(4)(d))根据析取,合取的定义可用简单的算术运算求出结果,并将结果转换成逻辑值。

同样根据等价关系可将条件式及双条件式转换成析取和合取的运算。

五、实验数据及结果分析实验所用函数:functiony=Not(x)if x==0y=1;else y=0;endfunction m=Vee(x,y)ifx==0&y==0m=0;else m=1;endfunction y=Wedge(P,Q)ifP==1&Q==1y=1;else y=0;endfunction y=If(P,Q)y=Vee(Not(P),Q);endfunctiony=Hh(P,Q,R)y=Vee(Wedge(P,R),If(P,Q));endfunction y=Ss(P,Q,R)y=Wedge(If(P,Wedge(Q,R)),If(Not(P),Wedge(Not(Q),Not(R))));endA=[0 000 010 100 1 11 0 01 0 11101 1 1];P=A(:,1);Q=A(:,2);R=A(:,3);In=input(‘请输入含有三个变元的命题公式:’);S={‘真值表为’};T=num2str([P,Q,R,In]);T%保存命名为Zzb'此为求(P→(Q∧R))∧(¬P→(¬Q∧¬R))主析取范式、主合取范式的程序,并判断是否为重言式,以K代替其真值'P=[0 0 00 11 1 1];Q=[00 1 1 0 0 11];R=[0 1 0 1 0 1 0 1];' P QR'Z=[P;Q;R]'K=Wedge(If(P,Wedge(Q,R)),If(Not(P),Wedge(Not(Q),Not(R))));'主析取范式:'A=[];V=[];for i=find(K)switch icase 1A=[A,'(¬P∧¬Q∧¬R)∨'];case 2A=[A,'(¬P∧¬Q∧R)∨'];case 3A=[A,'(¬P∧Q∧¬R)∨'];case 4A=[A,'(¬P∧Q∧R)∨'];case 5A=[A,'(P∧¬Q∧¬R)∨'];case 6A=[A,'(P∧¬Q∧R)∨'];case 7A=[A,'(P∧Q¬∧R)∨'];case 8A=[A,'(P∧Q∧R)'];otherwise'此为永假式'endendA'主合取范式'for i=find(Not(K))switch icase1V=[V,'(P∨Q∨R)∧'];case 2V=[V,'(P∨Q¬∨R)∧'];case 3V=[V,'(P∨¬Q∨R)∧'];case 4V=[V,'(P∨¬Q∨¬R)∧'];case 5V=[V,'(¬P∨Q∨R)∧'];case 6V=[V,'(¬P∨Q∨¬R)∧'];case 7V=[V,'(¬P∨¬Q∨R)∧'];case 8V=[V,'(¬P∨¬Q∨¬R)'];otherwise'此为永真式'endendVif all(K)==1'K是重言式'else'K不是重言式'end %保存文件名为ZyP17 (1) (b):(P∧R)∨(P→Q)运行过程及结果:>> P=[00 0 0 1 11 1],Q=[0 0 1 1 0 0 11],R=[010 1 0 1 0 1]P=0 0 0 0 1 1 1 1Q=0 0 1 1 001 1R =0 1 0 1 0 1 0 1>> Zzb本程序可以求真值表, 请输入含有三个变元的命题公式: Vee(Wedge(P,R),If(P,Q))T =00 0 10 0 1 10 1 0 10 1 1 1100 01 0 1 11 1 0 11111P39 (4)(d):(P→(Q∧R))∧(¬P→(¬Q∧¬R))运行过程及结果:>>Zyans =此为求(P→(Q∧R))∧(¬P→(¬Q∧¬R))主析取范式、主合取范式的程序,并判断是否为重言式,以K代替其真值ans =P QRZ =0 0000 10 1 00 1 11 0 01 0 11 1 01 1 1ans =主析取范式:A =(¬P∧¬Q∧¬R)∨(P∧Q∧R)ans =主合取范式V=(P∨Q¬∨R)∧(P∨¬Q∨R)∧(P∨¬Q∨¬R)∧(¬P∨Q∨R)∧(¬P∨Q∨¬R)∧(¬P∨¬Q∨R)ans =K不是重言式六、收获与体会通过实验使我了解了一些数理逻辑问题可以通过用计算编程的方法来解决,一些定理的证明同样也可以用计算机通过将命题符号化来编程解决。

中南大学离散数学实验报告(实验2ac)

中南大学离散数学实验报告(实验2ac)

“离散数学”实验报告(实验2AC)专业班级学号姓名日期:目录一、实验目的 (3)二、实验内容 (3)三、实验环境 (3)四、实验原理和实现进程(算法描述) (3)A题型 (3)C题型 (4)五、实验数据及结果分析 (7)A题型 (7)B题型 (9)六、源程序清单 (11)A题型 (11)B题型 (12)七、其他收成及体会 (18)一、实验目的把握关系的概念与性质,大体的关系运算,关系的各类闭包的求法。

明白得等价类的概念,把握等价类的求解方式。

二、实验内容1. 求有限集上给定关系的自反、对称和传递闭包。

(有两种求解方式,只做一种为A,两种都做为B)2. 求有限集上等价关系的数量。

(有两种求解方式,只做一种为A,两种都做为B)3. 求解商集,输入集合和等价关系,求相应的商集。

(C)三、实验环境C或C++语言编程环境实现。

四、实验原理和实现进程(算法描述)A题型求有限集上等价关系的数量。

集合上的等价关系与该集合的划分之间存在一一对应关系。

一个等价关系对应一个划分,一个划分也对应一个等价关系。

咱们把n个元素的集合划分成k 块的方式数叫第二类Stirling数,表示为S(n,k)。

给定S(n,n) = S(n,1) = 1,有递归关系:S(n,k) = S(n − 1,k − 1) + kS(n − 1,k)集合上所有等价类的个数即为k从1到n,所有S(n,k)之和。

那个问题的算法比较简单,仅需两步就可完成,第一依照上式,概念一个递归函数S(n,k),然后对k从1到n,求取sum=∑S(n,k),sum的值确实是给定n元集合上的等价关系数量,最后将其输出即可。

A题型的流程图如下所示:C题型求解商集,输入集合和等价关系,求相应的商集商集即等价类组成的集合,要求商集,第一需要判定输入的关系是不是为等价关系,不然没有商集。

判定输入的关系是不是为等价关系的算法如下:(1)将输入的关系转换为关系矩阵,那个地址概念了一个函数translate(),转换的方式为:依次查找输入的关系中的二元组的两个元素在集合中的位置,例如<a,b>,假设a在集合A中的位置为i,b在集合A中的位置为j,就令寄存关系矩阵的二维数组M[i][j]=1,如此就将输入的关系R转换为关系矩阵的形式。

实验一 传递闭包的实现(离散数学实验报告)

实验一 传递闭包的实现(离散数学实验报告)

实验一传递闭包算法一、实验目的1、理解关系矩阵作为布尔矩阵的逻辑运算2、通过编程深刻理解Warshall快速算法3、验证Warshall快速算法的正确性4、掌握C语言的编程技巧和方法二、实验内容用C语言编程实现传递闭包的Warshall快速算法三、实验原理(Warshall算法的原理)M[i,j]表示关系R的关系矩阵M中元素若在关系R的关系图中存在从v i到v j的有向路径,则M[i,j]=1;否则M[i,j]=0。

定义:M k[i,j]=1 若在关系R的关系图中存在从v i到v j的有向路径,且这条路上除了v1,v2,┉,v k外没有其它节点否则M[i,j]=0即M0[i,j]=1⇔在关系R的关系图中存在从v i到v j的有向边M1[i,j]=1⇔在关系R的关系图中存在从v i到v j的有向路径,且这条路上除了可能有v1外没有其它节点M2[i,j]=1⇔在关系R的关系图中存在从v i到v j的有向路径,且这条路上除了可能有v1,v2外没有其它节点┉┉┉根据此定义,仅当下列两情形之一发生时,M k[i,j]=1(1)存在从v i到v j的有向路径,且这条路上除了可能有v1,v2,┉,v k-1外没有其它节点。

因此M k-1[i,j]=1(2)存在从v i到v k的有向路径和从v k到vj的有向路径,且每条路上除了可能有v1,v2,┉,v k-1外没有其它节点。

因此M k-1[i,k]=1 且M k-1[k,j]=1因此,M k[i,j]= M k-1[i,j] ∨(M k-1[i,k]=1∧M k-1[k,j]=1)四、实验要求:1、对输入的数据进行合法性检查,输入输出界面友好2、编写和调试完成程序3、保存和打印程序的运行结果五、实验步骤(一)算法描述Step 1 初始化MStep 2 刷新M 对k=1,2,┉n 重复Step 3和Step 4Step 3 刷新行对i=1,2,┉n 重复Step 4Step 4 刷新M ij对j=1,2,┉n置M ij=M ij ∨(M ik∧M kj)[结束Step 3循环][结束Step 2循环]Step 5 退出(二)流程图┉┉┉┉┉(三)程序清单┉┉┉┉┉六、测试数据1、输入关系矩阵的传递闭包的关系矩阵:R1=⎪⎪⎪⎭⎫⎝⎛001011001, R2=⎪⎪⎪⎪⎪⎭⎫ ⎝⎛0010001001000011, R3=⎪⎪⎪⎪⎪⎪⎭⎫⎝⎛0000000000110000010110010 输出的结果应为:t(R1)=⎪⎪⎪⎭⎫ ⎝⎛001011001, t(R2)=⎪⎪⎪⎪⎪⎭⎫⎝⎛0110011001100111,t(R3)=⎪⎪⎪⎪⎪⎪⎭⎫⎝⎛0000000000110001111111111参考程序:#include<stdio.h>#define N 3int main(){int i,j,k,M[N][N];printf("put in data 0 or 1\n");for(i=0;i<N;i++)for(j=0;j<N;j++)scanf("%d",&M[i][j]);printf("mibao:\n");for(k=0;k<N;k++)for(i=0;i<N;i++)for(j=0;j<N;j++)if((M[i][k]&&M[k][j])||M[i][j]) M[i][j]=1;for(i=0;i<N;i++){for(j=0;j<N;j++)printf(" %d",M[i][j]);printf("\n");}}输出结果:。

实验一传递闭包的实现

实验一传递闭包的实现

实验一传递闭包的实现实验一:传递闭包的实现摘要:本实验通过使用离散数学中的传递闭包的概念,设计了一种算法来实现传递闭包的计算。

实验首先介绍了传递闭包的定义和性质,然后详细描述了实现算法的步骤。

接着,通过编程语言来实现算法,并使用一个具体的例子进行了测试。

最后,对实验结果进行了分析和总结,验证了算法的正确性和有效性。

1.引言在离散数学中,传递闭包是一个重要的概念,它在关系理论以及图论中都有广泛的应用。

传递闭包是指对于给定集合上的关系R,存在一个最小的传递关系R',它是R的一个子关系且满足传递性。

计算传递闭包的问题是离散数学中的一个经典问题,解决该问题对于理解传递关系的性质以及进行相应的推理和分析非常重要。

2.传递闭包的定义和性质给定集合A上的关系R,传递闭包R'满足以下条件:-R'是R的一个子关系,即R'⊆R;-R'是传递的,即对于任意的a,b,c∈A,如果aR'b且bR'c,则aR'c。

传递闭包的计算有多种方法,本实验将介绍一种基于矩阵运算的方法。

3.实现算法的步骤给定集合A和关系R,计算传递闭包R'的步骤如下:1)构建集合A上的关系矩阵M,其中M[i][j]表示a[i]Rb[j]是否成立;2)对矩阵M进行幂运算,即计算M的n次幂,其中n为集合A的元素个数;3)对矩阵M每个元素进行逻辑或运算,得到最终的传递闭包关系矩阵;4)根据传递闭包关系矩阵构建传递闭包关系R'。

4.实现代码及测试下面给出了使用Python实现传递闭包计算的代码:```pythondef transitive_closure(A, R):n = len(A)M = [[False] * n for _ in range(n)]for i, a in enumerate(A):for j, b in enumerate(A):if (a, b) in R:M[i][j] = Truefor k in range(n):for i in range(n):for j in range(n):M[i][j] = M[i][j] or (M[i][k] and M[k][j])R_prime = []for i in range(n):for j in range(n):if M[i][j]:R_prime.append((A[i], A[j]))return R_prime#测试A=[1,2,3,4]R=[(1,2),(2,3),(3,4)]R_prime = transitive_closure(A, R)print("传递闭包R':", R_prime)```运行以上代码,输出结果为:```传递闭包R':[(1,2),(1,3),(1,4),(2,3),(2,4),(3,4)]```可以看到,计算得到的传递闭包R'包含了所有满足传递性的关系。

传递闭包怎么求离散数学

传递闭包怎么求离散数学

传递闭包怎么求离散数学
离散数学作为数学的一门分支,它研究的研究领域包括集合论、顺序和树等结构,其中涉及到闭包的研究也已经引起了社会的广泛关注。

闭包作为离散数学的特定学科,其特点在于可以以一种不断发展世界的形式描述我们研究的问题。

它既可以作为抽象概念来解释概念性问题,也可以作为明确规则和行为方式,从而提供有用的信息,从而实现未来研究的可能性。

首先,要正确理解闭包,必须具备基础的离散数学知识,如集合论、表达式式、序和树等。

了解离散数学的基本概念,可以帮助我们理解闭包的概念。

其次,要正确理解闭包,我们必须深入了解它的概念,并建立闭包的数学模型,考虑它的结构、性质以及它的行为方式和逻辑,以及它的发展历史等等。

另外,也要了解现在实际应用闭包的基础,并在此基础上深入地探究它们的技术原理。

最后,要正确理解闭包,必须学习研究它在应用实践中的最新发展;了解其实际应用场景、优势以及如何应用;掌握它与现有的其它工具的结合;发掘新的应用空间,以促进闭包的有效应用。

总之,要正确理解闭包,必须综合性地分析和研究它的抽象理论和现实实践,运用包括离散数学等许多知识领域。

只有彻底深入地了解闭包,才能发挥它在解决现代问题方面的潜能,使之能够受到更加广泛的应用。

离散数学如何求r的传递闭包

离散数学如何求r的传递闭包

离散数学如何求r的传递闭包离散数学的传递闭包是指在一个关系 R 上,通过不断地迭代是否存在一些元素关系可以联通,扩展出一个新的关系闭包集合,使得 R 中任何两个元素之间都存在一条路径。

其中,R 是原始关系,而 R 的传递闭包是所有可以从 R 中的元素得到的路径的集合。

传递闭包是在关系上的一个重要属性,因为它可以表示元素之间的隐含关系,从而有助于更详细地分析和描述数据。

计算 R 的传递闭包有多种方法,其中最经典的是 Warshall 算法。

下面是使用Warshall 算法计算 R 的传递闭包的步骤。

1)建立一个大小为n × n 的布尔矩阵 T,其中 T[i][j] 表示从 i 到 j 是否存在一条路径。

2)将布尔矩阵 T 的初始值设置为 R 的布尔矩阵。

3)进行 n 次迭代,每次迭代更新布尔矩阵 T 的值。

具体地,对于 T 中的每一个元素 T[i][j],如果存在一个 k 使得 T[i][k] 和 T[k][j] 均为 true,则将 T[i][j] 设为 true。

4)最终的 T 就是 R 的传递闭包。

下面是 Warshall 算法的详细代码实现:```int[][] transitiveClosure(int[][] R) {int n = R.length;int[][] T = new int[n][n];// 初始化 T 为 R 的布尔矩阵for (int i = 0; i < n; i++) {for (int j = 0; j < n; j++) {if (R[i][j] == 1) {T[i][j] = 1;}}}// 根据 Warshall 算法进行迭代for (int k = 0; k < n; k++) {for (int i = 0; i < n; i++) {for (int j = 0; j < n; j++) {T[i][j] |= (T[i][k] & T[k][j]);}}}return T;}```该算法的时间复杂度为 O(n^3),其中 n 是 R 的大小。

离散数学二元关系传递性判别、闭包方法实验报告材料

离散数学二元关系传递性判别、闭包方法实验报告材料

离散数学二元关系传递性判别、闭包方法实验报告学院:理学院班级:11信息与计算科学1班姓名:*** 学号:*************一、实验目的1. 通过上机程序,进一步加深对二元关系传递性判别,自反闭包,对称闭包,传递闭包的理解。

2. 掌握传递性判别,Warshall算法。

3. 学会用程序解决离散数学中的问题。

4. 增强我们编写程序的能力二、实验内容实验1:二元关系传递性判别实验2:有限集上给定关系的自反、对称和传递闭包(用Warshall算法)。

三、实验环境在microsoft visual c++实验环境下完成的,而所设计的程序也在这个环境下通过了编译,运行和测试。

四、实验原理和实现过程实验1:#include <iostream>using namespace std;void main(){int n,i,j,k;int m=0; //m是判断传递关系计数参数cout<<"请输入矩阵的行列数n:";cin>>n;int a[20][20];for(i=1;i<=n;i++){for(j=1;j<=n;j++){cout<<"请输入a["<<i<<"]["<<j<<"]:";cin>>a[i][j];}} //输入R矩阵cout<<"R的关系矩阵为:"<<endl;for(i=1;i<=n;i++){for(j=1;j<=n;j++){cout<<a[i][j]<<" ";}cout<<endl;} //输出R矩阵for(i=1;i<=n;i++){for(j=1;j<=n;j++){if(a[i][j]!=0){for(k=1;k<=n;k++){if(a[i][k]<a[j][k] //利用布尔加的特征,前一行数大于后一行{m=m+1; //如果有一个数不成立,m加1}}}}}if(m==0) cout<<"R有传递关系"<<endl;else cout<<"R没有传递关系"<<endl;}实验2:1)自反闭包#include <iostream>using namespace std;void main(){int n,i,j;cout<<"请输入矩阵的行列数n:";cin>>n;int a[20][20];for(i=1;i<=n;i++){for(j=1;j<=n;j++){cout<<"请输入a["<<i<<"]["<<j<<"]:";cin>>a[i][j];}}cout<<"R的关系矩阵为:"<<endl;for(i=1;i<=n;i++){for(j=1;j<=n;j++){cout<<a[i][j]<<" ";}cout<<endl;}for(i=1;i<=n;i++){for(j=1;j<=n;j++){if(a[i][j]!=0){a[i][i]=1;a[j][j]=1; //把符合条件的对角线上的值改为1 }}}cout<<"R的关系矩阵为:"<<endl;for(i=1;i<=n;i++){for(j=1;j<=n;j++){cout<<a[i][j]<<" ";}cout<<endl;}}2)对称闭包#include <iostream>using namespace std;void main(){int n,i,j;cout<<"请输入矩阵的行列数n:";cin>>n;int a[20][20];for(i=1;i<=n;i++){for(j=1;j<=n;j++){cout<<"请输入a["<<i<<"]["<<j<<"]:";cin>>a[i][j];}}cout<<"R的关系矩阵为:"<<endl;for(i=1;i<=n;i++){for(j=1;j<=n;j++){cout<<a[i][j]<<" ";}cout<<endl;}for(i=1;i<=n;i++){for(j=1;j<=n;j++){if(a[i][j]!=0){a[j][i]=1; //对称元素的值改为1 }}}cout<<"R的对称闭包矩阵为:"<<endl;for(i=1;i<=n;i++){for(j=1;j<=n;j++){cout<<a[i][j]<<" ";}cout<<endl;}}3)传递闭包#include <iostream>using namespace std;void main(){int n,i,j,k;int m=0;cout<<"请输入矩阵的行列数n:";cin>>n;int a[20][20];for(i=1;i<=n;i++){for(j=1;j<=n;j++){cout<<"请输入a["<<i<<"]["<<j<<"]:";cin>>a[i][j];}}cout<<"R的关系矩阵为:"<<endl;for(i=1;i<=n;i++){for(j=1;j<=n;j++){cout<<a[i][j]<<" ";}cout<<endl;}for(j=1;j<=n;j++){for(i=1;i<=n;i++){if(a[i][j]==1){for(k=1;k<=n;k++){a[i][k]=a[i][k]+a[j][k]; //warshall方法if(a[i][k]==2) a[i][k]=1; //规范布尔加}}}}cout<<"R的传递闭包矩阵为:"<<endl;for(i=1;i<=n;i++){for(j=1;j<=n;j++){cout<<a[i][j]<<" ";}cout<<endl;}}五、实验输入输出和数据实验1:1)输入没有传递关系的关系矩阵R2)输入课本P30/例2.6实验2:1)自反闭包2)对称闭包3)传递闭包 P52/例2.13六、实验体会通过这次的实验,使我明白了,平日里学习不能浅尝辄止,必须要知道它的方法。

闭包运算实验报告

闭包运算实验报告

一、实验目的了解和掌握闭包运算的概念,熟悉Warshall算法,掌握求关系的自反闭包、对称闭包和传递闭包的方法。

二、实验内容从键盘输入一个关系的关系矩阵,计算其自反闭包、对称闭包和传递闭包,传递闭包要求使用Warshall算法,用C语言实现。

三、思路分析(即代码分析)声明:R[][]表示关系R;x[]表示集合X; r[]表示自反闭包;s[]表示对称闭包;t[]表示传递闭包(一),输入形式:先输出提示符:请先输入集合X中元素的个数,之后输入集合X中的元素(不同元素之间用空格隔开,行末用回车结束):第一行:先输入集合X中元素的个数n,空一格之后输入集合X中的元素,不同元素之间用空格隔开,行末用回车结束:输出提示符:请先输入集合X上的二元关系R的序偶对个数,再输入集合X上的二元关系R,每一对序偶用a,b表示,序偶之间用空格隔开,行末用回车结束:第二行:先输入集合X上的二元关系R的序偶对个数,空一格之后输入集合X上的二元关系R,每一对序偶用a,b表示,序偶之间用空格隔开,行末用回车结束:(二)、输入记录:记录时将X中的元素按照输入的次序依次编号,存储在数组x[]中对应编号的位置1,通过输入的集合X中元素的个数n来控制之后的元素输入循环次数;2,通过输入的集合X上二元关系序偶对的个数来控制之后序偶对的输入循环次数;3,输入序偶对时,每次直接输入到临时变量a,b中,之后在集合x[]中遍历,找到此次输入的序偶对在x[]所对应的位置,之后将二维矩阵R[][]对应位置置1,表示有此对应关系(三),自反闭包计算将关系R[][]复制到自反闭包 r[][] 矩阵中,之后将行数等于列数的元素置1,便按照自反闭包定义将矩阵r[][]扩充到符合要求(四),对称闭包计算扫瞄关系矩阵R[][],记录其中不为1的元素的行列数,之后将对称矩阵s[][]相应的行列数和行数和列数相反的位置都置1;便按照对称闭包定义将矩阵r[][]扩充到符合要求(五),传递闭包计算1,按照Warshall算法,先将R[][]复制到r[][]中,2,遍历r[][]的每列,在每列中找到不为0的元素r[i][j],之后将j行与i行对应的元素进行逻辑加,将结果赋值到第i行上去;3,遍历完每一列后所得的矩阵就是传递闭包的对应矩阵四、实验结果与分析对于输出的闭包关系中,每对序偶用a,b表示,序偶之间用空格隔开,每输出一次用回车结束(例)每次输出时先输出提示符:关系R的自反闭包为:Sample Output:关系R的自反闭包为:a,a a,b b,b b,d c,a c,c d,d d,e e,b e,e关系R的对称必包为:a,b a,c b,a b,d b,e c,a d,b d,e e,b e,d关系R的传递必包为:a,b a,d a,e b,b b,d b,e c,a c,b c,d c,e d,b d,d d,e e,b e,d e,e五、VS2010中验证结果(全视图):请先输入集合X中元素的个数,之后输入集合X中的元素(不同元素之间用空格隔开,行末用回车结束):5 a b c d e请先输入集合X上的二元关系R的序偶对个数,再输入集合X上的二元关系R,每一对序偶用a,b表示,序偶之间用空格隔开,行末用回车结束:5 a,b b,d c,a d,e e,b关系R的自反闭包为:a,a a,b b,b b,d c,a c,c d,d d,e e,b e,e关系R的对称必包为:a,b a,c b,a b,d b,e c,a d,b d,e e,b e,d关系R的传递必包为:a,b a,d a,e b,b b,d b,e c,a c,b c,d c,e d,b d,d d,e e,b e,d e,e 请按任意键继续. . .六、实际输出:。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

实验一传递闭包算法
一、实验目的
1、理解关系矩阵作为布尔矩阵的逻辑运算
2、通过编程深刻理解Warshall快速算法
3、验证Warshall快速算法的正确性
4、掌握C语言的编程技巧和方法
二、实验内容
用C语言编程实现传递闭包的Warshall快速算法
三、实验原理(Warshall算法的原理)
M[i,j]表示关系R的关系矩阵M中元素
若在关系R的关系图中存在从v i到v j的有向路径,则M[i,j]=1;否则M[i,j]=0。

定义:M k[i,j]=1 若在关系R的关系图中存在从v i到v j的有向路径,且这条路上除了v1,v2,┉,v k外没有其它节点
否则M[i,j]=0

M0[i,j]=1⇔在关系R的关系图中存在从v i到v j的有向边
M1[i,j]=1⇔在关系R的关系图中存在从v i到v j的有向路径,且这条路上除了可能有v1外没有其它节点
M2[i,j]=1⇔在关系R的关系图中存在从v i到v j的有向路径,且这条路上除了可能有v1,v2外没有其它节点
┉┉┉
根据此定义,仅当下列两情形之一发生时,M k[i,j]=1
(1)存在从v i到v j的有向路径,且这条路上除了可能有v1,v2,┉,v k-1外没有其它节点。

因此
M k-1[i,j]=1
(2)存在从v i到v k的有向路径和从v k到vj的有向路径,且每条路上除了可能有v1,v2,┉,v k-1外没有其它节点。

因此
M k-1[i,k]=1 且M k-1[k,j]=1
因此,M k[i,j]= M k-1[i,j] ∨(M k-1[i,k]=1∧M k-1[k,j]=1)
四、实验要求:
1、对输入的数据进行合法性检查,输入输出界面友好
2、编写和调试完成程序
3、保存和打印程序的运行结果
五、实验步骤
(一)算法描述
Step 1 初始化M
Step 2 刷新M 对k=1,2,┉n 重复Step 3和Step 4
Step 3 刷新行对i=1,2,┉n 重复Step 4
Step 4 刷新M ij对j=1,2,┉n
置M ij=M ij ∨(M ik∧M kj)
[结束Step 3循环]
[结束Step 2循环]
Step 5 退出
(二)流程图
┉┉┉┉┉
(三)程序清单
┉┉┉┉┉
六、测试数据
1、输入关系矩阵的传递闭包的关系矩阵:
R1=⎪⎪⎪⎭⎫
⎝⎛001011001, R2=⎪⎪⎪⎪⎪⎭⎫ ⎝⎛001000
1001000011, R3=⎪⎪
⎪⎪⎪
⎪⎭

⎝⎛0000000000110000010110010 输出的结果应为:
t(R1)=⎪⎪⎪⎭⎫ ⎝⎛001011001, t(R2)=⎪⎪⎪⎪⎪⎭⎫
⎝⎛0110011001100111,
t(R3)=⎪⎪⎪⎪⎪⎪⎭⎫
⎝⎛00
00000
00011
00011111
11
111
参考程序:
#include<stdio.h>
#define N 3
int main()
{
int i,j,k,M[N][N];
printf("put in data 0 or 1\n");
for(i=0;i<N;i++)
for(j=0;j<N;j++)
scanf("%d",&M[i][j]);
printf("mibao:\n");
for(k=0;k<N;k++)
for(i=0;i<N;i++)
for(j=0;j<N;j++)
if((M[i][k]&&M[k][j])||M[i][j]) M[i][j]=1;
for(i=0;i<N;i++)
{
for(j=0;j<N;j++)
printf(" %d",M[i][j]);
printf("\n");
}
}
输出结果:。

相关文档
最新文档