弗洛伊德算法有点小问题,希望大家帮忙解决下,谢谢大家乐

jinyanhe 2011-02-20 02:07:02
int Floyd(ArcNode d[][MAX_VERTEX_NUM],int path[][MAX_VERTEX_NUM],AdjMatrix *G)
{
int n=G->vexnum;
int i,j,k;
/*d=new ArcNode *[n];path=new int*[n];*/
for(i=0;i<n;i++)
{
/*d[i]=new ArcNode[n];path[i]=new int[n];*/
for(j=0;j<n;j++)
{
d[i][j].adj=G->arcs[G->vexnum][G->vexnum].adj;
if(i!=j&&d[i][j].adj<INFINITY)path[i][j]=i;
else path[i][j]=-1;
}
}
for(k=0;k<n;k++)
for(i=0;i<n;i++)
for(j=0;j<n;j++)
if(d[i][k].adj+d[k][j].adj<d[i][j].adj)
{
d[i][j].adj=d[i][k].adj+d[k][j].adj;
path[i][j]=path[k][j];
}
return 1;
}
void main ()
{
AdjMatrix G;
//initialize(G);
CreateDN(&G); 这是创建有向图,函数省略了
for(int i=0;i<G.vexnum;i++)
{
for(int j=0;j<G.vexnum;j++)
{
printf("%-10d",G.arcs[i][j].adj);
}
printf("%\n");
}
ArcNode d[MAX_VERTEX_NUM][MAX_VERTEX_NUM];
int path[MAX_VERTEX_NUM][MAX_VERTEX_NUM];
Floyd(d,path,&G);
printf("path路径");
printf("%\n");

for(i=0;i<G.vexnum;i++)
{
for(int j=0;j<G.vexnum;j++)
{
printf("%-10d",path[i][j]);
}
printf("%\n");
}

}
有向图为(32768为无穷大)
32768 1 32768 4
32768 32768 4 2
3 5 32768 8
32768 32768 6 32768
输出地path数组却是
-1 0 0 0
1 0 0 0
2 0 0 0
3 0 0 0
但是正确的应该是
-1 0 3 1
2 -1 3 1
2 0 -1 1
2 0 3 -1

不知道是哪里出了问题,希望各位认真看看,谢谢大家了,这个对我很重要。

...全文
133 4 打赏 收藏 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
無_1024 2011-02-20
  • 打赏
  • 举报
回复
d[i][j].adj=G->arcs[G->vexnum][G->vexnum].adj;
这样的话所有的d[i][j].adj都是一样的 因为G->vexnum是一个不变的常量
qq120848369 2011-02-20
  • 打赏
  • 举报
回复
d[i][j].adj=G->arcs[G->vexnum][G->vexnum].adj;

我表示对此表示猜疑,自己仔细点检查就知道了.
heguo2chao3 2011-02-20
  • 打赏
  • 举报
回复
把所有代码都贴出来吧…… 利于调试
qq120848369 2011-02-20
  • 打赏
  • 举报
回复
把所有代码都贴上来,测试用例贴上来。
内容概要:本文介绍了“Java+大数据+AI架构师实战营”这一系统性人才培养方案,旨在帮助具备Java基础的开发者在26周内完成向融合Java、大数据与人工智能技术的复合型架构师跃迁。课程围绕五大核心模块展开:架构基本功(微服务演进、分布式锁与ID设计)、数据引擎(亿级数据存储与Flink CDC实时同步)、网关与可观测性(Gateway源码改造、限流与日志采样)、AI融入架构(推荐系统、大模型应用开发)以及架构思维培养。通过“小绿书”项目贯穿始终,强调整合三域技术的系统设计能力而非孤立技能堆叠。; 适合人群:具备1-5年Java开发经验,希望突破技术瓶颈、拓展大数据与AI领域能力的中高级研发人员;适合有志于成长为全栈架构师的技术从业者。; 使用场景及目标:①掌握高并发、分布式系统下的架构设计方法;②理解海量数据的存储分层与实时计算架构;③学会将AI能力如大模型、RAG、向量检索等深度集成到业务系统中;④构建完整的系统可观测性与网关控制能力;⑤形成跨技术域的系统性架构思维。; 阅读建议:此资源以实战项目驱动学习,强调动手实践与架构思维并重。建议学习者结合课程代码与实际调试,深入理解每一环节的技术选型与设计权衡,尤其关注真实生产环境中难以复现的复杂约束,从而建立可迁移的架构“手感”。

70,040

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧