| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 647 人关注过本帖
标题:[讨论]c编程,没有胆量的别进来
只看楼主 加入收藏
白乌鸦
Rank: 1
等 级:新手上路
帖 子:17
专家分:0
注 册:2004-10-6
收藏
 问题点数:0 回复次数:1 
[讨论]c编程,没有胆量的别进来
[求助]最短路径,很有趣的,如果你想的到!

大哥别怪我!题目都挂了几天了,还没有见有大侠帮忙, 我想,是~ 不~是~我的标题有问题,于是呼,我就换了一个标题又发了上来, 目的只是能解决算法中存在的问题。 对我的行为向各位道歉,且先致以诚挚的谢意!!

这是一个寻求最短路径的函数 但是对图中的某些点不能搜索出最短路线 void shortpath(struct AlGraph G) { int cost[MAX][MAX]; /*cost[][]记录的是路径长度*/ int dist[MAX]; /*某源点到各顶点的最短路径长度,dist[k-1]为到所查询的景点的距离,最终只须输出该值 */ int path[MAX]; /*某源点到终点经过的顶点有序集短路径的终点判定集合,合的数组,即要输出的内容*/ int s[MAX]; /*最短为1则已经包含*/ int i,j,n,v0,min,u,k;/*u存放最短路径的终点,k记录所要查询的景点终点*/ int m1,m2; printf("\n请输入你要查询的景点起点的编号 :"); scanf("%d",&v0); if( v0<=0 || v0>G.vexnum ) { printf("\n 你的输入有错误! \n"); exit(-1); } printf("请输入你要游览的景点代号 : "); scanf("%d",&k); if( k<=0 || k>G.vexnum ) { printf("\n 你的输入有错误! \n"); exit(-1); } printf(" 请按回车键以继续\n"); getchar(); m1=v0; m2=k; v0--; k--; for(i=0;i<G.vexnum;i++) /*给cost[][]赋初始值*/ { for(j=0;j<G.vexnum;j++) cost[i][j]=G.arcs[i][j]; } printf(" 初始值赋值结束 \n"); getchar(); for(i=0;i<G.vexnum;i++) /* 所要景点到其他景点的路径长 */ { dist[i]=cost[v0][i]; if(dist[i]<large&&dist[i]>0) path[i]=v0; s[i]=0; } printf(" 路径求解结束 \n"); getchar(); clrscr(); s[v0]=1; /* 记录起始点 */ for(i=0;i<G.vexnum;i++) { min=large; u=v0; for(j=0;j<G.vexnum;j++) if(s[j]==0&&dist[j]<min) {min=dist[j];u=j;} s[u]=1; /*u顶点是求得最短路径的顶点编号,置1表示记录下*/ for(j=0;j<G.vexnum;j++) if(s[j]==0&&dist[u]+cost[u][j]<dist[j]) { dist[j]=dist[u]+cost[u][j]; path[j]=u; } } printf("输出 % s 到各个景点的距离 \n" ,name[m1-1]); for(i=0;i<G.vexnum;i++) if(i!=m1-1) printf(" %d米 \t %s \n\n",dist[i],name[i]); getchar(); printf("\n 顶点 %s 到 %s 的最短路径长度为和途径如下 :\n",name[m1-1],name[m2-1]);

getchar(); i=m1;/*输出结果*/ printf("%s\t",name[u]); if(s[i]==1) { u=i; while(u!=v0) { getchar(); printf("中间途经---%s ",name[u]); u=path[u]; } printf("\n 路径长度是%d米 ",dist[i]); printf(" \n 输出结束 \n"); getchar(); } }

附:图中有直接通路的初始值 G.arcs[0][1]=100; G.arcs[0][12]=200; G.arcs[1][0]=100; G.arcs[1][3]=120; G.arcs[1][6]=50; G.arcs[1][7]=50; G.arcs[1][12]=100; G.arcs[1][13]=50; G.arcs[2][3]=50; G.arcs[2][13]=30; G.arcs[3][1]=120; G.arcs[3][2]=50; G.arcs[3][4]=50; G.arcs[3][5]=50; G.arcs[3][6]=50; G.arcs[4][3]=50; G.arcs[4][5]=100; G.arcs[5][3]=50; G.arcs[5][4]=100; G.arcs[5][6]=50; G.arcs[5][8]=50; G.arcs[6][1]=50; G.arcs[6][3]=50; G.arcs[6][5]=50; G.arcs[6][7]=30; G.arcs[6][8]=50; G.arcs[6][9]=50; G.arcs[7][1]=50; G.arcs[7][6]=30; G.arcs[7][9]=50; G.arcs[8][5]=50; G.arcs[8][6]=80; G.arcs[9][6]=50; G.arcs[9][7]=50; G.arcs[9][10]=50; G.arcs[9][12]=50; G.arcs[10][9]=50; G.arcs[10][11]=50; G.arcs[10][12]=100; G.arcs[11][10]=50; G.arcs[12][0]=200; G.arcs[12][1]=100; G.arcs[12][9]=50; G.arcs[12][10]=100; G.arcs[13][1]=50; G.arcs[13][2]=30; 谢谢各位!

[此贴子已经被作者于2004-10-10 11:07:17编辑过]

搜索更多相关主题的帖子: 胆量 
2004-10-09 23:29
白乌鸦
Rank: 1
等 级:新手上路
帖 子:17
专家分:0
注 册:2004-10-6
收藏
得分:0 

当某些人在同志们的帮助下成长起来后,就很少在光临论坛了,我想这就为什么我的这个帖子没有人会的缘故吧。

气愤啊,气愤!


游离在代码和爱情之间的我, 感受了代码的枯燥; 品味了爱情的甜蜜; ‘盛夏’来的, 来陪伴我最最可爱的代码......
2004-10-11 08:15
快速回复:[讨论]c编程,没有胆量的别进来
数据加载中...
 
   



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

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