用C语言实现Warshall运算

用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

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");

           }

     }

}

用C语言实现Warshall运算_第1张图片

你可能感兴趣的:(用C语言实现Warshall运算)