| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 803 人关注过本帖
标题:我的dijkstra程序有问题 vC运行的!
只看楼主 加入收藏
djx20040701
Rank: 1
等 级:新手上路
帖 子:44
专家分:0
注 册:2006-4-20
收藏
 问题点数:0 回复次数:0 
我的dijkstra程序有问题 vC运行的!

#include "stdio.h"
#include "stdlib.h"
#define N 6 // 顶点数
#define S 0 // 尚未求出最短路径
#define T 1 // 已经求出最短路径
#define M 10000

///////////////////////////////////////////////////////

void dijkstra(int cost[][N],int v,int dist[],char path[][N]); //计算v到其余各顶点的最短距离dist[],最短路径path[N][N]
int mincost(int dist[],int set[]); //在S集合中找顶点w,dist[w]是dist[]中的最小值
void strcat(char path_j[],char path_w[],int w); // 合并路径

///////////////////////////////////////////////////////函数说明
void main()
{
int cost[N][N]={
{0 ,M ,10 ,M ,30 ,100},
{M ,0 ,5 ,M ,M ,M },
{M ,M ,0 ,50 ,M ,M },
{M ,M ,M ,0, M ,10 },
{M ,M ,M ,20 ,0 ,60 },
{100,M ,M ,M ,M ,M },
};

int dist[N]; char path[N][N]; /* 路径字符串 */
dijkstra(cost,0,dist,path); /* 起点为顶点0 */
}

//计算v到其余各顶点的最短距离dist[],最短路径path[N][N]
void dijkstra(int cost[][N],int v,int dist[],char path[][N])
{ int set[N], i,j,nearest_v;
for(i=0; i<N; i++)
{ dist[i]=cost[v][i]; set[i]=S;
path[i][0]='\0'; /* 路径字符串初始化为空 */
}
for(set[v]=T,i=1; i<N; i++)
{
nearest_v=mincost(dist,set);
for(set[nearest_v]=T,j=0; j<N; j++)
if(set[j]==S && dist[nearest_v]+cost[nearest_v][j]<dist[j])
{
dist[j]=dist[nearest_v]+cost[nearest_v][j];
strcat(path[j],path[nearest_v],nearest_v); //合并路径
}
}
}

//在S集合中找顶点w,dist[w]是dist[]中的最小值/
int mincost(int dist[],int set[])
{
int i,min,w;
for(min=M,i=0; i<N; i++) /* N为顶点数 */
if(set[i]==S && dist[i]<min) { min=dist[i]; w=i; }
return(w);
}

// 合并路径
void strcat(char path_j[],char path_w[],int w)
{ int i;
for(i=0; path_w[i]!='\0'; i++) path_j[i]=path_w[i];
path_j[i++]=w+'0'; path_j[i]='\0';
}

搜索更多相关主题的帖子: dijkstra define include 
2006-05-23 09:04
快速回复:我的dijkstra程序有问题 vC运行的!
数据加载中...
 
   



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

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