番茄沙拉匠 2018-12-26 19:28 采纳率: 0%
浏览 297

开发环境为Visual C++6.0,为什么我的求最短路径时经过的路径点的结果是错的呢?

#include

#define SIZE 110

#define INF 1000000;

int map[SIZE][SIZE]; //邻接矩阵存储
int len[SIZE]; //d[i]表示源点到i这个点的距离
int visit[SIZE]; //节点是否被访问
int n;

void dijkstra(int from, int to){ //从源点到目标点
int path[100];
int h=0;
path[0]=from;

int i;  

for(i = 1 ; i <= n ; i ++){ //初始化 
    visit[i] = 0;   //一开始每个点都没被访问 
    len[i] = map[from][i];  //先假设源点到其他点的距离 
}  

int j;  
for(i = 1 ; i < n ; i++){   //对除源点的每一个点进行最短计算 
    int min = INF;  //记录最小len[i] 
    int pos;  //记录最小len[i] 的点 

    for(j = 1 ; j <= n ; j++){  
        if((!visit[j]) && min > len[j]){  
            pos = j;  
            min = len[j];  
        }  
    }  
    visit[pos] = 1;  
    if(visit[to]==1){break;}

    for(j = 1 ; j <= n ; j++){
        if((!visit[j] )&& (len[j] > (len[pos] +map[pos][j]))){ //如果j节点没有被访问过&&源节点到j节点的最短路径>源节点到pos节点的最短路径+pos节点到j节点的路径  
            len[j] = len[pos] + map[pos][j];    //更新源节点到j节点的最短路径
            printf("%d",pos);
            h++;
            path[h]=pos;
        }  
    }  
}  

h++;
path[h]=to;
printf("最短距离为:");
printf("%d\n",len[to]);  

printf("路径为:");
for(i=0;i<h;i++){
        printf("%d->",path[i]);}
printf("%d",path[h]);

}

void main () {

int i,j; 

int f,t;
printf("请输入起点:");
scanf("%d",&f);
printf("请输入终点:");
scanf("%d",&t);

n = 6;  //测试数据 


for(i = 1 ; i <= n ; ++i){  //设一开始每个点都不可达 
    for(j = 1 ; j <= n ; ++j){  
        map[i][j] = INF;  
    }  
}  


map[1][2] = 7;  //测试数据 
map[1][3] = 9;
map[1][6] = 14;
map[2][3] = 10;
map[2][4] = 15;
map[3][6] = 2;
map[5][6] = 9;
map[4][5] = 6;
map[3][4] = 11;
for(i=1;i<=n;i++){
map[i][i]=0;}

dijkstra(f,t);  

}


  • 写回答

1条回答 默认 最新

  • 英雄哪里出来 2021年博客之星Top1 2018-12-26 11:45
    关注

    for(i = 1 ; i < n ; i++){ //对除源点的每一个点进行最短计算

    这里少了个等号吧~

    评论

报告相同问题?

悬赏问题

  • ¥15 用windows做服务的同志有吗
  • ¥60 求一个简单的网页(标签-安全|关键词-上传)
  • ¥35 lstm时间序列共享单车预测,loss值优化,参数优化算法
  • ¥15 Python中的request,如何使用ssr节点,通过代理requests网页。本人在泰国,需要用大陆ip才能玩网页游戏,合法合规。
  • ¥100 为什么这个恒流源电路不能恒流?
  • ¥15 有偿求跨组件数据流路径图
  • ¥15 写一个方法checkPerson,入参实体类Person,出参布尔值
  • ¥15 我想咨询一下路面纹理三维点云数据处理的一些问题,上传的坐标文件里是怎么对无序点进行编号的,以及xy坐标在处理的时候是进行整体模型分片处理的吗
  • ¥15 一直显示正在等待HID—ISP
  • ¥15 Python turtle 画图