离散数学-通过邻接矩阵求传递闭包
原理:Warshalll在1962年提出了R+的一个有效算法
实现代码:
#include <iostream>
using namespace std;
int temp[100][100];
void input(int n)
{
cout << "请输入邻接矩阵:\n";
for (int i = 0; i < n; i++)
{
for (int t = 0; t < n; t++)
{
cin >> temp[i][t];
}
}
}
void func(int n)
{
int i, j, k;
//运算
j = 0; k = 0;
for ( i = 0; i < n; i++)
{
for (j = 0; j < n; j++)
{
if (temp[j][i] == 1)
{
for (k = 0; k < n; k++)
{
temp[j][k] = temp[j][k] | temp[i][k];
}
}
}
}
//输出
cout << "MR+:\n";
for (i = 0; i < n; i++)
{
for (j = 0; j < n; j++)
{
cout << temp[i][j]<<" ";
}
cout << "\n";
}
}
int main()
{
cout << "请输入成员数:";
int n;
cin >> n;
input(n);
func(n);
return 0;
}