离散老师让写的关系闭包运算,c++版本。感觉warshall算法不是特别难。
#include<iostream>
#include<iomanip>
using namespace std;
int main()
{
int R[100][100],S[100][100],T[100][100],i,j,k,n;
cout<<"input n(0 or 1 n>1):"<<endl;
cin>>n;
for(j=1;j<=n;j++)
{
for(i=1;i<=n;i++)
cin>>R[j][i];
}
//复制数组
for(j=1;j<=n;j++)
{
for(i=1;i<=n;i++)
{
S[j][i]=R[j][i];
T[j][i]=R[j][i];
}
}
//输出数组
cout<<"shuchu:"<<endl;
for(j=1;j<=n;j++)
{
for(i=1;i<=n;i++)
cout<<setw(3)<<R[j][i];
cout<<endl;
}
//tR 运算
for(j=1;j<=n;j++)
{
for(i=1;i<=n;i++)
if(j==i)
R[j][i]=1;
}
cout<<"自反t(R):"<<endl; //输出
for(j=1;j<=n;j++)
{
for(i=1;i<=n;i++)
cout<<setw(3)<<R[j][i];
cout<<endl;
}
//sR运算
for(j=1;j<=n;j++)
{
for(i=1;i<=n;i++)
if(S[j][i]!=S[i][j])
S[j][i]=S[i][j]=S[j][i] || S[i][j];
}
cout

这篇博客介绍了如何使用C++实现Warshall算法,用于解决关系闭包运算问题。作者认为该算法理解起来并不复杂。
最低0.47元/天 解锁文章
421

被折叠的 条评论
为什么被折叠?



