Warshall 算法

算法思路:

(1)先初始化一个二维数组

(2)利用循环输入N*N的矩阵

(3)进行矩阵的运算

M0的第0列的1和第0行进行逻辑加。比如[1,0]+[0,1]=[1,1]=1

M1是在M0计算结果后的第1列和第1行进行逻辑加。

M2,M3和上面一样。

(4)打印计算后数组

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#define N 4  //定义矩阵为N*N
int get_matrix(int a[N][N])
{int i = 0, j = 0;for (i = 0; i < N; i++){for (j = 0; j < N; j++){scanf("%d", &a[i][j]);if (a[i][j] != 0 && a[i][j] != 1)return 1;}}return 0;
}
void warshall(int a[N][N])
{//(1)i=1//(2)对所有j如果a[j,i]=1.则对k=0,1. ... ,N-1,a[j,k]=a[j,k]|a[i,k]//(3)i加1;//(4)如果i<N则转到步骤2,否则停止int i = 0, j = 0, k = 0;for (i = 0; i < N; i++){for (j = 0; j < N; j++){if (a[j][i])//判断第i列上的第j个元素是不是1,是1才要逻辑加{for (k = 0; k < N; k++){a[j][k] = a[j][k] | a[i][k];//逻辑加}}}}
}
void output_matrix(int a[N][N])
{int i = 0, j = 0;for (i = 0; i < N; i++){for (j = 0; j < N; j++){printf("%d ", a[i][j]);}printf("\n");}
}
int main()
{int a[N][N] = { 0 };printf("please input a matrix with %d*%d\n", N, N);if (get_matrix(a)){printf("Get matrix error!Only 0 or 1 in matrix!\n");return 1;//错误返回主函数,返回值为1;}warshall(a);output_matrix(a);return 0;//正常返回主函数,返回值为0
}

Warshall 算法(离散数学传递闭包)相关推荐

  1. C语言用warshall算法求传递闭包transitive closure(附完整源码)

    用warshall算法求传递闭包transitive closure warshall算法求传递闭包完整源码 warshall算法求传递闭包完整源码 #include <stdbool.h> ...

  2. WarShall算法求传递闭包(可达矩阵)

    最近在复习离散数学,顺便记录记录自己对warshall算法的理解. 1.传递闭包(可达矩阵) 传递闭包是有向图的一个重要性质,它指的是在有向图中从任意一个节点出发,可以到达的所有节点的集合.在某些应用 ...

  3. warshall算法求传递闭包c++_【建模小课堂】图论算法

    图论算法 图论算法在计算机科学中扮演着很重要的角色,它提供了对很多问题都有效的一种简单而系统的建模方式.很多问题都可以转化为图论问题,然后用图论的基本算法加以解决.这类问题算法主要包括Dijkstra ...

  4. War-shall 算法 【求传递闭包】 离散数学记录

    学离散数学时遇到到第一个算法,记录一下: 代码思路: warshall(A[1...n,1...n] r(0)<-A; for(k=1;k<=n;k++)for(i=1;i<=n;i ...

  5. 离散数学 传递闭包 Warshall算法

    老师布置一个作业,要写Warshall算法课后,这里给写出来了. 这个算法本身很简单,倒是学习了一下参数为二维数组的传递方法,正确代码如下: /* Warshall算法 */ #include < ...

  6. 离散数学中Warshall算法简析

    离散数学中Warshall算法简析 最近学了离散数学的图论,突然感觉离散数学的作用十分强大,相信学好离散数学中的算法,编程的魅力也不言而喻.闲话不多说,这篇博客中记录的是Warshall算法的简单解析 ...

  7. WarShall算法求矩阵传递闭包关系

    离散知识 给了你一个矩阵,你如何求他的传递闭包呢? //求出如下矩阵的传递闭包 1 0 1 0 0 1 1 1 0 0 0 0 0 0 1 1 0 0 1 0 0 0 0 0 0 利用WarShall ...

  8. Warshall算法求有向图的传递闭包

    1定义是这样给出的,传递闭包:对于任何关系 R,R 的传递闭包总是存在的.传递关系的任何家族的交集也是传递的.进一步的,至少存在一个包含 R 的传递关系,也就是平凡的: X × X.R 传递闭包给出自 ...

  9. 基于Warshall算法的连通图及欧拉图判定方法

    1736年欧拉解决了哥尼斯堡七桥问题.他在这一具体问题的基础上进一步研究,最终找到了一个简便的原则可以鉴别一个图(多重图)能否一笔画成. 本文中,笔者使用布尔矩阵来存储一个无向图,并结合集合论中&qu ...

最新文章

  1. R语言e1071包中的支持向量机:构建nu-classification类型的支持向量机SVM并分析不同nu值惩罚下模型分类螺旋线型(sprials)线性不可分数据集的表现
  2. 洛谷 P1101 单词方阵
  3. DC使用教程系列1-.synopsys.dc.setup的建立
  4. tp5上传文件并获取文件路径_thinkphp表单上传文件并将文件路径保存到数据库中...
  5. 若川诚邀你加源码共读群,帮助更多人学会看源码~
  6. java jni helloword_JNI学习一:编写HelloWorld程序
  7. Java笔记-JDBC心跳检测及断开重连线程实例
  8. leanote 支持php,Leanote source leanote源码导读
  9. 英文科技写作 · 经验分享 · 讨论合集
  10. LVS的VS/NAT及VS/DR类型实现
  11. tidyverse —— forcats包
  12. atitit.javascript调用java in swt attilax 总结
  13. oracle怎么拼接数据,拼接oracle数据
  14. ch341a_USB转串口/并口驱动
  15. Python与ADB的基情四射(一)——简单命令
  16. 大数据先驱Cloudera拥抱云计算,探索后Hadoop时代的下一代数据平台
  17. MTK android 常用修改点
  18. 李沐动手学深度学习V2-实战Kaggle比赛:狗的品种识别(ImageNet Dogs)和代码实现
  19. 5.8 前端开发日报
  20. 如何在Microsoft Edge中更改主页

热门文章

  1. 前端canvas画海报
  2. 英语写作模板(适合高考、四六级英语和考研英语)
  3. MobaXterm官网下载
  4. python可以编程手机版_手机最强Python编程神器,在手机上运行Python
  5. 评论:雷军再次分享互联网七字诀 称用诺基亚的人out了
  6. 使用Arduino和蓝牙实现语音控制LED指示灯
  7. msiexec.exe的用法
  8. 现在40系显卡都快出来了,为何1060型号的显卡还有这么多人用?
  9. 运用python爬取彼岸桌面所有关键字高清壁纸
  10. jQuery快速掌握(看这一篇就够了)