前段时间,自信的以为离散数学就要挂科之时,离散数学程序设计实验课从天而降。正所谓富贵险中求,为了不挂科,赌一把(要么两个科目都过,要么两个科目都挂掉)。
一位可怜的室友被我拉下了水之后,事情就变得非常有趣了( ﹁ ﹁ ) ~→
定义
如此繁琐、混沌、模糊、抽象、反人类的定义,大家看了之后估计要打死我呀器qiu♂️
简单的解释一下
#include
using namespace std;
class Partiality {
public:
Partiality() //定义构造函数
{
len = 0;
memset(m, 0, sizeof(m));
}
void input() //定义用于数据输出的函数
{
cout << "请输入集合中元素个数" << endl;
cin >> len; //输入元素个数
bool temp;
cout << "请输入关系矩阵" << endl;
for (int i = 0; i < len; i++) //输入关系矩阵
for (int j = 0; j < len; j++)
cin >> m[i][j];
}
void print_matrix()//输出关系矩阵
{
cout << "关系矩阵:" << endl;
for (int i = 0; i < len; i++) {
for (int j = 0; j < len; j++) {
cout << m[i][j] << " ";
}
cout << endl;
}
}
bool is_jida(int num) //判断极大元
{
//行 0,如果在行上,处本身外全为零,则它是极大元
bool ans = 1;
for (int i = 0; i < len; i++)
{
if (i != num)
{
if (m[num][i])
{
ans = 0;
break;
}
}
}
return ans;
}
bool is_zuida(int num) //判断最大元
{
//如果列上全是1,那么它是最大元
bool ans = 1;
for (int i = 0; i < len; i++)
{
if (!m[i][num])
{
ans = 0;
break;
}
}
return ans;
}
bool is_jixiao(int num) //判断极小元
{
//如果列上除本身外,其它值全部是0,那么他是极小元
bool ans = 1;
for (int i = 0; i < len; i++)
{
if (i != num)
{
if (m[i][num])
{
ans = 0;
break;
}
}
}
return ans;
}
bool is_zuixiao(int num) //判断最小元
{
//如果行上全是1,那么它是最小元
bool ans = 1;
for (int i = 0; i < len; i++)
{
if (!m[num][i])
{
ans = 0;
break;
}
}
return ans;
}
void print_jida() //输出极大元
{
int sum = 0;
cout << "极大元:";
for (int i = 0; i < len; i++)
{
if (is_jida(i))
{
cout << i << " ";
sum++;
}
}
if (!sum)
cout << "无";
cout << endl;
}
void print_zuida() //输出最大元
{
int sum = 0;
cout << "最大元:";
for (int i = 0; i < len; i++)
{
if (is_zuida(i))
{
cout << i << " ";
sum++;
}
}
if (!sum)
cout << "无";
cout << endl;
}
void print_jixiao() //输出极小元
{
int sum = 0;
cout << "极小元:";
for (int i = 0; i < len; i++)
{
if (is_jixiao(i))
{
cout << i << " ";
sum++;
}
}
if (!sum)
cout << "无";
cout << endl;
}
void print_zuixiao()//输出最小元
{
int sum = 0;
cout << "最小元:";
for (int i = 0; i < len; i++)
{
if (is_zuixiao(i))
{
cout << i << " ";
sum++;
}
}
if (!sum)
cout << "无";
cout << endl;
}
bool m[128][128];
int len;
};
int main()
{
Partiality p;
p.input();
p.print_jida();
p.print_jixiao();
p.print_zuida();
p.print_zuixiao();
return 0;
}
输入数据
6
1 1 1 0 1 1
0 1 0 0 0 1
0 0 1 0 1 0
0 0 0 1 0 1
0 0 0 0 1 1
0 0 0 0 0 1