- 博客(0)
- 资源 (2)
- 收藏
- 关注
利用Warshall_算法求二元关系的可传递闭包
代码
#include
#include
using namespace std;
int n;int a[20][20];
int b[20][20];
int c[20][20];
void Warshall();
int main(){
//ifstream cin("1.txt");
for(;cin>>n;){
int i,j;
for ( i=1;i<=n;i++)
{
cout<<"请输入矩阵第"<<i+1<<"行元素:";
for( j=1;j>a[i][j];
b[i][j]=a[i][j];
}
}
cout<<"原矩阵邻接矩阵为:"<<endl;
for(i=1;i<=n;i++){
for(int j=1;j<=n;j++)
cout<<b[i][j]<<' ';
cout<<endl;
}
for(int x=2;x<=n;x++){
if(x==n){
Warshall();
cout<<"原矩阵的可达矩阵为:"<<endl;
for(i=1;i<=n;i++){
for(j=1;j<=n;j++){
if(c[i][j]!=0)c[i][j]=1;
cout<<c[i][j]<<' ';
}
cout<<endl;
}
}
}
}
return 0;
}
void Warshall(){
for(int ii=1;ii<=n;ii++){
for(int jj=1;jj<=n;jj++){
c[ii][jj]=0;
for(int kk=1;kk<=n;kk++)
c[ii][jj] +=a[ii][kk]*b[kk][jj];
}
}
for(int iii=1;iii<=n;iii++){
for(int jjj=1;jjj<=n;jjj++)
b[iii][jjj]=c[iii][jjj];
}
}
2013-05-06
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人