离散数学:用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;
}
作者:Friends-A
出处:https://www.cnblogs.com/Friends-A/p/9308986.html
版权:本作品采用「署名-非商业性使用-相同方式共享 4.0 国际」许可协议进行许可。
Buy me a cup of coffee ☕
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)