离散数学:用C语言来判断集合存在的二元关系
用C语言来判断是否满足自反,反自反,非自反,对称,反对称,非对称和传递性
也不知道写的对不对。没有大量验证,但是随便找的一些关系测试的没毛病,如果错了,欢迎各位大佬留言
#include<bits/stdc++.h>
const int maxn=1e3+10;
int a[maxn][maxn];
int vis[maxn][maxn];
int v[maxn][maxn];
int num,s_ize;
int res;
void relation1()//判断自反,反自反,非自反
{
int flag=0;
for(int i=1;i<=num;i++)
{
if(a[i][i])
flag++;
}
if(flag==num)
printf("满足自反性\n");
else if(flag!=num&&flag!=0)
printf("满足非自反性\n");
else if(!flag)
printf("满足反自反性\n");
}
void relation2()//判断对称
{
int flag=0;
for(int i=1;i<=num;i++)
{
for(int j=1;j<=num;j++)
{
if(a[i][j]==a[j][i]&&vis[i][j])
{
flag++;
vis[i][j]=0;
}
}
}
if(flag==s_ize)
{
printf("满足对称性\n");
res++;
}
}
void relation3()//反对称,非对称
{
int flag=0;
for(int i=1;i<num;i++)
{
for(int j=i+1;j<=num;j++)
{
if(a[i][j]&&a[j][i]&&i!=j)
{
flag++;
break;
}
}
}
if(flag==0)
{
res++;
printf("满足反对称性\n");
}
if(!res)
printf("满足非对称性\n");
}
void relation4()//传递性
{
int flag=1;
int num1,num2;
for(int i=1;i<s_ize;i++)
{
for(int j=2;j<=s_ize;j++)
{
if(v[i][2]==v[j][1])
{
num1=v[i][1],num2=v[j][2];
if(vis[num1][num2]!=1)
{
flag=0;
break;
}
}
}
if(!flag)
break;
}
if(!flag)
printf("不满足传递性\n");
else
printf("满足传递性\n");
}
int main(int argc, char const *argv[])
{
printf("---------开始进行二元关系的判断---------\n");
printf("请输入需要执行的次数\n");
int t;
scanf("%d",&t);
int T=0;
while(t--)
{
printf("******Case%d:请输入集合中的元素个数******\n",++T);
scanf("%d",&num);
if(num<=0)
break;
printf("请输入集合中的关系个数:\n");
scanf("%d",&s_ize);
printf("请输入集合中的关系元素,一共有 %d 对关系 %d 个元素(请以整数形式输入) \n",s_ize,2*s_ize);
int x,y;
res=0;
memset(a,0,sizeof(a));
memset(vis,0,sizeof(vis));
for(int k=1;k<=s_ize;k++)
{
scanf("%d%d",&x,&y);
v[k][1]=x;
v[k][2]=y;
a[x][y]=1;
vis[x][y]=1;
}
int i,j;
printf("**********输出关系矩阵**********\n");
for(i=1;i<=num;i++)
{
for(j=1;j<=num;j++)
{
printf("%d\t",a[i][j]);
}
printf("\n");
}
relation1();
relation2();
relation3();
relation4();
printf("\n");
}
printf("********************感谢使用********************\n");
return 0;
}
离散数学:用C语言来判断集合存在的二元关系的更多相关文章
- Linq:切勿使用 Count() > 0 来判断集合非空
原文(http://www.cnblogs.com/ldp615/archive/2011/12/11/2284154.html) Linq 出现之前,我们通常使用下面的方式来判断集合是否非空,即集合 ...
- 用Count() > 0 来判断集合非空的问题
Linq 出现之前,我们通常使用下面的方式来判断集合是否非空,即集合包含元素: ]; ; var list = new List<string>(); ; var collection = ...
- 【Go语言】集合与文件操作
本文目录 1.数据集合的主要操作 1_1.字典的声明 1_2.字典的初始化和创建 1_3.字典的访问和操作 1_4.其他类型的数据集 2.文件操作 2_1.文件操作概述os包和path包 2_2.文件 ...
- 函数式Android编程(II):Kotlin语言的集合操作
原文标题:Functional Android (II): Collection operations in Kotlin 原文链接:http://antonioleiva.com/collectio ...
- C#语言基础——集合(ArrayList集合)
集合及特殊集合 集合的基本信息: System.Collections 命名空间包含接口和类,这些接口和类定义各种对象(如列表.队列.位数组.哈希表和字典)的集合.System.Collections ...
- C#语言各种集合介绍
集合,表示可以通过遍历每个元素来访问的一组对象(特别是可使用foreach循环访问)一个集合包括多个元素,即有一个集合类对象和N个元素对象 因为任何集合类都实现了IEnumerable接口,所以任何集 ...
- c#基础语言编程-集合
引言 在c#常用的集合分为非泛型集合和泛型集合. 非泛型集合的类和接口位于System.Collections命名空间.这些接口和类定义各种对象(如列表.队列.位数组.哈希表和字典)的集合. 泛型集合 ...
- Go 语言Map(集合)
Map 是一种无序的键值对的集合.Map 最重要的一点是通过 key 来快速检索数据,key 类似于索引,指向数据的值. Map 是一种集合,所以我们可以像迭代数组和切片那样迭代它.不过,Map 是无 ...
- 我的Java之旅 第五课 JAVA 语言语法 集合
JAVA集合只能存放引用类型的的数据,不能存放基本数据类型,int 可以用 Integer代替. 一.集合接口 1. Iterable<E> 实现这个接口允许对象成为 "fo ...
随机推荐
- C语言的 32个关键之和9个控制语言之关键字
auto break case char const continue default do double else enum extern float for goto ...
- zw“小数据”理论也碰上了“黑天鹅”
4月上旬,在blog<大数据和高频量化交易 >,我们曾经说过: 实战测试,数据越多,反而会影响精度.目前个人数据分析的一个重点,就是"小"数据.老子<道德经·第六 ...
- C++ string和C风格字符串
https://msdn.microsoft.com/en-us/library/syxtdd4f.aspx#basic_string__replace If you need to convert ...
- 我是如何通过debug成功甩锅浏览器的:解决fixed定位元素,在页面滚动后touch事件失效问题
如果你关注我应该知道,我最近对PC端页面进行移动适配.在这个过程中,为了节省用户300ms的时间,同时给予用户更及时的点击反馈(这意味着更好的用户体验),我在尝试使用移动端独有的 touchstart ...
- 两行python代码,你是否可猜到运行结果
两行python代码,你是否可猜到运行结果 参考: http://www.cnblogs.com/way_testlife/archive/2011/07/20/2111549.html#215689 ...
- win10下搭建深度学习--总结【学习笔记】
win10 下搭建深度学习开发环境总结: 1.本人环境如下:win10,GTX1050TI.i7,anaconda3,vs2015,cuda9.0,cudnn7.1.4,tensorflow-gpu= ...
- Ubuntu下录制屏幕并转换成gif【转】
本文转载自:https://blog.csdn.net/u012964944/article/details/50464263 *录制屏幕 1)打开Ubuntu软件中心,安装RecordMyDeskt ...
- 【转载】hibernate缓存机制
一级缓存(session级别) 我们来看看hibernate提供的一级缓存 //此时会发出一条sql,将所有学生全部查询出来,并放到session的一级缓存当中.当再次查询学生信息时,会首先去缓存中看 ...
- POJ 2771 Guardian of Decency
http://poj.org/problem?id=2771 题意: 一个老师想带几个同学出去,但是他怕他们会谈恋爱,所以带出去的同学两两之间必须满足如下条件之一: ①身高差大于40 ②同性 ③喜欢 ...
- mybatis报Invalid bound statement (not found) 分析
解决问题的步骤,请参考: 1.mapper.xml要和对应的mapper接口在同一个包下,包名要一模一样. 2.Mapper接口中的方法在Mapper.xml中没有,然后执行Mapper接口的方法 ...