首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

输出两个景点之间的路径,不多于8个景点解决方案

2012-06-14 
输出两个景点之间的路径,不多于8个景点void path(MGraph G,int m,int n,int k){int s,x0int tk+1//t

输出两个景点之间的路径,不多于8个景点
void path(MGraph G,int m,int n,int k){
  int s,x=0;
int t=k+1; //t 记载路径上下一个中间顶点在d[]数组中的下标
if(d[k]==n && k<9) //d[k]存储路径顶点。若d[k]是终点n且景点个数<=8,则输出该路径
{ //递归出口,找到一条路径
for(s=0;s<k;s++)
printf("%s--->",G.vexs[d[s]].name);//输出该路径。s=0 时为起点m
  printf("%s",G.vexs[d[s]].name); //输出最后一个景点名(即顶点n的名字,此时s==k)
  printf("\n\n");
  }
  else
{
s=0;
  while(s<G.vexnum) //从第m个顶点,试探至所有顶点是否有路径
{
if((G.arcs[d[k]][s].adj<MAX) && (visited[s]==0)) //初态:顶点m到顶点s有边,且未被访问
{
visited[s]=1;
d[k+1]=s; //存储顶点编号s 至d[k+1]中
path(G,m,n,t); //求从下标为t=k+1的第d[t]个顶点开始的路径(递归调用),同时打印出一条m至n的路径
visited[s]=0; //将找到的路径上顶点的访问标志重新设置为0,以用于试探新的路径
}
s++; //试探从下一个顶点 s 开始是否有到终点的路径
}//endwhile
 
}//endelse
}
这段代码什么意思

[解决办法]
类似于路由算法

热点排行