| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1286 人关注过本帖
标题:帮忙看下程序,就两点间的最短路径。
只看楼主 加入收藏
p_rince
Rank: 1
等 级:新手上路
帖 子:7
专家分:0
注 册:2008-10-18
收藏
 问题点数:0 回复次数:5 
帮忙看下程序,就两点间的最短路径。
#include "stdio.h"

#define n 6
#define e 8

typedef char vextype;
typedef int dajtype;
typedef struct
{
    vextype vexs[n];
    adjtype arcs[n][n];
}graph;

CREATGPATH(ga)
graph *ga;
{
    int i,j,k;
    float w;
    for(i=0; i<n; i++)
        ga->vexs[i]=getchar();
    for(i=0; i<n; i++)
        for(j=0; j<n; j++)
        ga->arcs[i][j]=0;
    for(k=0 ;j<e; k++)
    {
        scanf("%d%d%f",&i,&j,&k);
        ga->arcs[i][j]=w;
        ga->arcs[j][i]=w;
    }
        
}

/* 求两点距离 */
float D[n];
int P[n],S[n];
DIJKSTRA(C,v)   /* 求源点v到其余点的最短路径长度 */
float C[][n];   /* C为有向图网络带权邻接矩阵 */
int v;
{
    int i,k,k,vl,pre;
    int min,max=60,inf=80;
    v1=v-1;
    for(i=0; i<n; i++)
    {
        D[i]=C[v1][i];    /* 初始化距离值 */
        if(D[i]!=max) P[i]=v;
        else P[i]=0;
    }
    for(i=0; i<n; i++) S[i]=0;  /* 红点集开始为空 */
    S[v1]=1; D[v1]=0;
    for(i=0; i<=n-1; i++ ) /* 扩充红点集 */
    {
        min=inf;    /* 令inf>max,保证距离值为max的蓝点扩充到S中 */
        for(j=0; j<n; j++)  /*  在当前蓝点集中选距离值最小的顶 k+1 */
        if((!S[j]&&(D[j]<min))
        {
            min=D[j]; k=j;
        }
        S[k]=1;         /* 将k+1加入红点集 */
        for(j=0; j<n; j++)
            if((!S[j]) && (D[j]>D[k]+C[k][j])) /* 调整各蓝点的距离值 */
            {D[j]=D[k]+C[k][j];               /* 修改蓝点j+1的距离 */
             P[j]=k+1;
            }
    }/*所有定点均扩充到S中*/
    for(i=0 ; j<n; i++)
    {
        printf("%f\n%d",D[i],i+1);     /*打印结果*/
        Pre=p[i];
        while(pre!=0)
        {printf("<----%d",pre);
         pre=P[pre-1];
        }
    }
}



main()
{

}
帮忙看下算法,写下主函数调试通过,谢谢了
初学者请教了
搜索更多相关主题的帖子: 路径 
2008-12-02 18:25
geninsf009
Rank: 3Rank: 3
等 级:论坛游民
威 望:8
帖 子:613
专家分:95
注 册:2008-8-16
收藏
得分:0 
你写的main()函数上面的代码是定义的什么函数啊?怎么连函数头也没有啊?
2008-12-02 19:05
p_rince
Rank: 1
等 级:新手上路
帖 子:7
专家分:0
注 册:2008-10-18
收藏
得分:0 
main()里面没写
我想让大家看下程序帮忙测试通过,所以没写
2008-12-02 22:12
geninsf009
Rank: 3Rank: 3
等 级:论坛游民
威 望:8
帖 子:613
专家分:95
注 册:2008-8-16
收藏
得分:0 
看你写的像是Dijkstra算法,求任意两点的最短路径,你可以调用n次Dijkstra算法就可以了啊。
2008-12-02 22:42
p_rince
Rank: 1
等 级:新手上路
帖 子:7
专家分:0
注 册:2008-10-18
收藏
得分:0 
能给出源码
谢谢
2008-12-03 14:09
geninsf009
Rank: 3Rank: 3
等 级:论坛游民
威 望:8
帖 子:613
专家分:95
注 册:2008-8-16
收藏
得分:0 
我前面刚发过一个帖子,里面有我写的现成的最短路径算法,有单源的,也有任意两点间的.
2008-12-03 15:28
快速回复:帮忙看下程序,就两点间的最短路径。
数据加载中...
 
   



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

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