| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 612 人关注过本帖
标题:用 迪杰斯克特拉算法 求最短路径
只看楼主 加入收藏
xdzsm
Rank: 2
等 级:论坛游民
帖 子:137
专家分:99
注 册:2010-10-26
结帖率:83.33%
收藏
已结贴  问题点数:20 回复次数:3 
用 迪杰斯克特拉算法 求最短路径

#include <stdio.h>
#include <stdlib.h>
#define INF   9999
const int MAXVEX= 99999;



void main()
{
    int cost[6][MAXVEX]={
        {0, INF, 100, 30, INF, 10},
        {INF, 0, INF, INF, INF, 5},
        {INF, INF, 0, INF, INF,INF},
        {INF, INF, 60, 0, 20, INF},
        {INF, INF, 10, INF, 0, INF},
        {INF, INF, INF, INF, 50, 0}};
    Dijkstra (cost, 6, 1);
    printf("\n");
    system("pause");
    return 0;
}



void Dijkstra (int cost[][MAXVEX],int n, int v)
{
     int dist[MAXVEX], path[MAXVEX];
     int s[MAXVEX];
     int mindis, i, j, u, pre;
     for (i=0; i<n; i++)
     {   dist[i]=cost[v][i];
         s[i]=0;
         if (cost[v][i]<INF)
             path[i]=v;
         else
             path[i]=-1;
     }
     s[v]=1;path[v]=0;
     for (i=0; i<n; i++)
     {   mindis=INF;
         u=-1;
         for (j=0; j<n; j++)
             if (s[j]==0 && dist[j]<mindis)
             {
                        u=j;
                        mindis=dist[j];
                        
             }
         if (u!=-1)
         {   s[u]=1;
             for (j=0; j<n; j++)
                 if (s[j]==0)
                     if (cost[u][j]<INF && dist[u]+cost[u][j]<dist[j])
                     {   dist[j]=dist[u]+cost[u][j];
                         path[j]=u;
                     }
         }
     }
     printf("\n The methods of Dijkstra are as follow:\n");
     for (i=0;i<n;i++)
     {
         if (i!=v)
         {   printf("vi:");
             if (s[i]==1)
             {   printf ("The length of the path is:" ,dist[i]);
                 pre=i;
                 printf ("The reversed path is:");
                 while (pre!=v)
                 {   printf("pre");
                     pre=path[pre];
                 }
                 printf("pre");
             }
             else
                 printf("The path dose not exist!");
         }
     }
}

   迪杰斯克特拉算法  求最短路径

大家帮忙看下,在 Dev—cpp   下运行总报错!!
搜索更多相关主题的帖子: 迪杰斯克特拉 算法 路径 
2010-11-25 13:32
xdzsm
Rank: 2
等 级:论坛游民
帖 子:137
专家分:99
注 册:2010-10-26
收藏
得分:0 
谢啦!
2010-11-25 13:33
hahayezhe
Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15
来 自:湖南张家界
等 级:贵宾
威 望:24
帖 子:1386
专家分:6999
注 册:2010-3-8
收藏
得分:20 
1. main为void型 你添加了返回值
2. void Dijkstra (int cost[][MAXVEX],int n, int v)的声明在调用之后!
2010-11-25 15:55
xdzsm
Rank: 2
等 级:论坛游民
帖 子:137
专家分:99
注 册:2010-10-26
收藏
得分:0 
回复 3楼 hahayezhe
可是是

  Dijkstra (cost, 6, 1);

报错!
2011-01-09 01:22
快速回复:用 迪杰斯克特拉算法 求最短路径
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.031475 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved