用C语言实现Warshall运算:
1.先定义两个整形变量m n。用scanf输入,m代表数组的行,n代表数组的列。然后定义数组a[m][n]。
2.用两个for循环对数组进行输入.写一个while循环循环条件为判断i是否小于矩阵的列。
3.用两个for循环对矩阵每个元素进行判断,判断是否等于1,如果等于1,则用一个for循环实现A[j,k]=A[j,k]∨A[i,k],这时候的矩阵元素并不是进行了逻辑运算,所以吧运算后数值大于0的数赋值为1。然后对while循环条件i进行加1,来判断矩阵的下一列。之后双for循环打印矩阵。
#include<stdio.h>
int main()
{
int i = 1,j= 1,k = 1;
int m,n;
scanf("%d%d",&m,&n);
int a[m][n];
for(i =0;i<m;i++)
{
for(j= 0;j<n;j++)
scanf("%d",&a[i][j]);
}
while(i<=n)
{
for(j= 0;j<m;j++)
{
for(i= 0;i<n;i++)
{
if(a[j][i]== 1)
{
for(k= 0;k<n;k++)
{
a[j][k]= a[j][k]+a[i][k];
if(a[j][k]>0)
a[j][k]= 1;
}
}
}
}
i =i+1;
}
for(i =0;i<m;i++)
{
for(j= 0;j<n;j++)
{
printf("%d\t",a[i][j]);
if(j==n-1)
printf("\n");
}
}
}