序:
前段时间,自信的以为离散数学就要挂科之时,离散数学程序设计实验课从天而降。正所谓富贵险中求,为了不挂科,赌一把(要么两个科目都过,要么两个科目都挂掉)。 一位可怜的室友被我拉下了水之后,事情就变得非常有趣了( ﹁ ﹁ ) ~→
正文
定义 如此繁琐、混沌、模糊、抽象、反人类的定义,大家看了之后估计要打死我呀器qiu🤦♂️ 简单的解释一下
最小元:比任何元素都大的元素(其中有个奥妙就是最小元能与集合中的任何元素进行比较并且比他们都小)最大元:略。。。。略略略极小元:没有比它更小的元素(没有比它小不代表它比任何元素都小,因为可能存在无法与极小元进行比较的元素,既然有些元素没有办法进行比较,那自然是”没有比它更小“)极大元:同略 分析 对于偏序关系的偏序矩阵而言,通过分析,得出一下结论主对角线全为1除主对角线上的数字外,如果第 i 行全为0,那么第 i 个元素为极大元除主对角线上的数字外,如果第 i 行全是1,那么第 i 个元素为最小元除主对角线上的数字外,如果第 i 列全为0,那么第 i 个元素为极小元除主对角线上的数字外,如果第 i 列全为1,那么第 i 个元素为最大元 一波分析之后问题就有了头绪了,接下来就是用程序来进行操作了
程序 c++
#include
using namespace std;
class Partiality {
public:
Partiality() //定义构造函数
{
len = 0;
memset(m, 0, sizeof(m));
}
void input() //定义用于数据输出的函数
{
cout
for (int j = 0; j
//行 0,如果在行上,处本身外全为零,则它是极大元
bool ans = 1;
for (int i = 0; i
if (m[num][i])
{
ans = 0;
break;
}
}
}
return ans;
}
bool is_zuida(int num) //判断最大元
{
//如果列上全是1,那么它是最大元
bool ans = 1;
for (int i = 0; i
ans = 0;
break;
}
}
return ans;
}
bool is_jixiao(int num) //判断极小元
{
//如果列上除本身外,其它值全部是0,那么他是极小元
bool ans = 1;
for (int i = 0; i
if (m[i][num])
{
ans = 0;
break;
}
}
}
return ans;
}
bool is_zuixiao(int num) //判断最小元
{
//如果行上全是1,那么它是最小元
bool ans = 1;
for (int i = 0; i
ans = 0;
break;
}
}
return ans;
}
void print_jida() //输出极大元
{
int sum = 0;
cout
cout
if (is_zuida(i))
{
cout
if (is_jixiao(i))
{
cout
if (is_zuixiao(i))
{
cout |