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

           }

     }

}

在这里插入图片描述

  • 9
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值