#include #include using namespace std;

// 判断自反性 bool isReflexive(vector& setA, vector<vector>& relationR) { for (int i = 0; i < setA.size(); i++) { bool flag = false; for (int j = 0; j < relationR.size(); j++) { if (relationR[j][0] == setA[i] && relationR[j][1] == setA[i]) { flag = true; break; } } if (!flag) { return false; } } return true; }

// 判断对称性 bool isSymmetric(vector<vector>& relationR) { for (int i = 0; i < relationR.size(); i++) { bool flag = false; for (int j = 0; j < relationR.size(); j++) { if (relationR[i][0] == relationR[j][1] && relationR[i][1] == relationR[j][0]) { flag = true; break; } } if (!flag) { return false; } } return true; }

// 判断传递性 bool isTransitive(vector<vector>& relationR) { for (int i = 0; i < relationR.size(); i++) { for (int j = 0; j < relationR.size(); j++) { if (relationR[i][1] == relationR[j][0]) { bool flag = false; for (int k = 0; k < relationR.size(); k++) { if (relationR[i][0] == relationR[k][0] && relationR[j][1] == relationR[k][1]) { flag = true; break; } } if (!flag) { return false; } } } } return true; }

// 判断反自反性 bool isIrreflexive(vector& setA, vector<vector>& relationR) { for (int i = 0; i < setA.size(); i++) { for (int j = 0; j < relationR.size(); j++) { if (relationR[j][0] == setA[i] && relationR[j][1] == setA[i]) { return false; } } } return true; }

// 判断反对称性 bool isAsymmetric(vector<vector>& relationR) { for (int i = 0; i < relationR.size(); i++) { for (int j = 0; j < relationR.size(); j++) { if (relationR[i][0] == relationR[j][1] && relationR[i][1] == relationR[j][0] && i != j) { return false; } } } return true; }

int main() { // 输入集合A int sizeA; cout << "请输入集合A的大小:"; cin >> sizeA; vector setA(sizeA); cout << "请输入集合A的元素:"; for (int i = 0; i < sizeA; i++) { cin >> setA[i]; }

// 输入二元关系R
int sizeR;
cout << "请输入二元关系R的大小:";
cin >> sizeR;
vector<vector<int>> relationR(sizeR);
cout << "请输入二元关系R的元素(用空格隔开):" << endl;
for (int i = 0; i < sizeR; i++) {
    int a, b;
    cin >> a >> b;
    relationR[i] = {a, b};
}

// 判断基本性质
if (isReflexive(setA, relationR)) {
    cout << "关系R是自反的" << endl;
} else {
    cout << "关系R不是自反的" << endl;
}
if (isSymmetric(relationR)) {
    cout << "关系R是对称的" << endl;
} else {
    cout << "关系R不是对称的" << endl;
}
if (isTransitive(relationR)) {
    cout << "关系R是传递的" << endl;
} else {
    cout << "关系R不是传递的" << endl;
}
if (isIrreflexive(setA, relationR)) {
    cout << "关系R是反自反的" << endl;
} else {
    cout << "关系R不是反自反的" << endl;
}
if (isAsymmetric(relationR)) {
    cout << "关系R是反对称的" << endl;
} else {
    cout << "关系R不是反对称的" << endl;
}

return 0;
写一个C++程序满足以下要求:输入集合A及在A上的二元关系R判断二元关系R的几种基本性质。要能正确判定任意二元关系的自反性、对称性、传递性、反自反性和反对称性。

原文地址: https://www.cveoy.top/t/topic/d4u0 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录