请写一个c语言代码:利用矩阵求解有限集上给定关系的自反和对称闭包。 输入格式 首先输入关系矩阵R的维数,回车之后输入矩阵每个元素,以空格或回车分开。 只能输入0或1。 输出格式 输出自反闭包关系矩阵r(R),对称闭包关系矩阵s(R)。
时间: 2024-04-22 07:23:31 浏览: 92
用矩阵求自反闭包自反闭包
好的,这里是 C 语言代码,可以实现你的要求:
```c
#include <stdio.h>
#include <stdlib.h>
void print_matrix(int **matrix, int n) {
int i, j;
for (i = 0; i < n; i++) {
for (j = 0; j < n; j++) {
printf("%d ", matrix[i][j]);
}
printf("\n");
}
}
void reflexive_closure(int **matrix, int n) {
int i;
for (i = 0; i < n; i++) {
matrix[i][i] = 1;
}
}
void symmetric_closure(int **matrix, int n) {
int i, j;
for (i = 0; i < n; i++) {
for (j = i + 1; j < n; j++) {
if (matrix[i][j] || matrix[j][i]) {
matrix[i][j] = matrix[j][i] = 1;
}
}
}
}
int main() {
int n, i, j;
scanf("%d", &n);
int **matrix = (int **) malloc(n * sizeof(int *));
for (i = 0; i < n; i++) {
matrix[i] = (int *) malloc(n * sizeof(int));
for (j = 0; j < n; j++) {
scanf("%d", &matrix[i][j]);
}
}
printf("Reflexive Closure:\n");
reflexive_closure(matrix, n);
print_matrix(matrix, n);
printf("Symmetric Closure:\n");
symmetric_closure(matrix, n);
print_matrix(matrix, n);
return 0;
}
```
代码的思路是先读取输入矩阵,然后分别计算自反闭包和对称闭包关系矩阵。最后输出这两个矩阵。
阅读全文