鱼C论坛

 找回密码
 立即注册
查看: 1422|回复: 3

[已解决]弗洛伊德算法输出问题

[复制链接]
发表于 2023-12-18 17:30:23 | 显示全部楼层    本楼为最佳答案   
这种情况下,程序输出为零是因为矩阵的声明和初始化有误。

在main函数中,矩阵的初始化方式有问题,你的目的肯定是想给一个3x3的矩阵进行初始化,但实际上你给的矩阵只在一部分区域进行了初始化,其他区域被隐式地初始化为零了。同时你在floyd函数中对于i和j的遍历上限都采用了常数38,远大于你的实际矩阵规模。

将main函数下的矩阵声明和初始化修改如下:


  1. int main()
  2. {
  3.     int graph[3][3] = { {0,6,13},{10,0,4} ,{5,Max,0} };
  4.     floyd(graph);
  5.     return 0;
  6. }
复制代码


然后将floyd函数的4个循环数修改为
  1. for (int k = 0; k < 3; k++)
  2. for (int i = 0; i < 3; i++)
  3. for (int j = 0; j < 3; j++)
复制代码

由于你只有3x3的矩阵,故只需遍历3次。这样,你的程序就应该能产生正确的输出了。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-10-25 03:50

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表