python贪心算法最短路径_贪心算法求最短路径问题讲解

#include 

#include 

const int size=5;

//

返回最短路径的长度

//edge[size][size]

,输入参数图信息

//nstart,ndest

,起点和终点

//path[size]

返回路径

int dijkstra(int edge[size][size],int nstart,int ndest,int path[size])

{

int mindis[size];//

起点到终点的最短路径产度

bool ins2[size];//

标志各点是否在

s2

//

初始化

int i;

for(i=0;i

{

ins2[i]=true;

}

ins2[nstart]=false;//

初始条件只有

nstart

s1

中,其余在

s2

for(i=0;i

{

mindis[i]=edge[nstart][i];//

初始各点的最短距离

if(edge[nstart][i]

path[i]=nstart;//

最短路径的前一点

else

path[i]=-1;//

前一点点不存在

}

//

进行计算

while(ins2[ndest])//

ndest

还在

s2

中进行计算

{

//

查找

s2

中最短路径的最小值的点

int nminlen=INT_MAX;//

最短路径长度的最小值

int npoint=-1;//

拥有最小值的点

for(i=0;i

查找

{

if((ins2[i])&&(mindis[i]

{

nminlen=mindis[i];

npoint=i;

}

}

if(nminlen==INT_MAX)

break;

//

更新

s2

mindis

ins2[npoint]=false;//

该点从

s2

移入

s1

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值