Floyd 警示后人

遍历的中转点一定要在最外层遍历!!!不然就会

image

错误的代码 ↓

	for(int i=1;i<=n;++i){
		for(int j=1;j<=n;++j){
			if(i==j)continue;
			for(int k=1;k<=n;++k){
				if(i==k||j==k)continue;
				if(mp[i][k]+mp[k][j]<mp[i][j])
					mp[i][j]=mp[i][k]+mp[k][j];
			}
		}
	}

正确的代码 ↓

	for(int k=1;k<=n;++k){
		for(int i=1;i<=n;++i){
			if(i==k)continue;
			for(int j=1;j<=n;++j){
				if(i==j||j==k)continue;
				if(mp[i][k]+mp[k][j]<mp[i][j])
					mp[i][j]=mp[i][k]+mp[k][j];
			}
		}
	}

发现区别了吗

posted @   DZhearMins  阅读(9)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· AI 智能体引爆开源社区「GitHub 热点速览」
· Manus的开源复刻OpenManus初探
· 写一个简单的SQL生成工具
点击右上角即可分享
微信分享提示