用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;
}

最新文章

  1. eclipse启动优化,终于不那么卡了!
  2. C#资源文件管理
  3. firefox与IE对js和CSS的区别(转http://log-cd.javaeye.com/blog/548665)
  4. Android BaseAdapter的使用
  5. iOS——Swift开发中的单例设计模式(摘译,非原创)
  6. Atitit. 构造ast 语法树的总结attilax v2 q0f
  7. MFC中的CDC,CClientDC,CPaintDC,CWindowDC的区别
  8. python正则表达式的学习记录
  9. POJ 1703 Find them, catch them (并查集)
  10. 与众不同 windows phone (5) - Chooser(选择器)
  11. War文件部署(转)
  12. Kotlin(二) 函数定义
  13. JavaScript拼接html字符串时截断问题
  14. mac 上如何安装非app store上的下载的软件-------打开未知来源
  15. loadrunner&#160;运行脚本-Run-time&#160;Settings-Browser&#160;Enmulation设置详解
  16. CSS3之多列布局columns详解
  17. 20170905工作日记--listview优化大全
  18. labview中小黑点,小红点
  19. 59、synchronized同步代码块
  20. 五、springboot单元测试

热门文章

  1. linux的浅谈io操作
  2. rails 数据验证
  3. ACM ICPC, Damascus University Collegiate Programming Contest(2018) Solution
  4. Es+kafka搭建日志存储查询系统(设计)
  5. SQL学习笔记六之MySQL数据备份和pymysql模块
  6. 端口安全检查shell脚本
  7. ubuntu16.04更新源的时候显示:由于没有公钥,无法验证下列签名: NO_PUBKEY 3D5919B448457EE0【学习笔记】
  8. 百度语音识别vs科大讯飞语音识别
  9. Maven编译的时候加载本地路径jar
  10. vim 将文件从dos格式转换到unix格式