您的位置:首页 > 其它

城市最短路径问题--图的广度优先搜索

2017-05-31 13:39 260 查看
#include<stdio.h>
const int n=8;
char city_name[8]={'A','B','C','D','E','F','G','H'};
int jz[8][8]=
{
{0,1,1,1,0,1,0,0},
{1,0,0,0,0,1,0,0},
{1,0,0,1,1,0,0,0},
{1,0,1,0,0,0,1,0},
{0,0,1,0,0,0,1,1},
{1,1,0,0,0,0,0,1},
{0,0,0,1,1,0,0,1},
{0,0,0,0,1,1,1,0}
};
struct
{
int city,pre;
} sq[100];
int qh,qe,i,visited[100];

void search();
void out();

void main( )
{
for(i=0;i<n;i++)  visited[i]=0;
search( );
printf("\n");
}

void search()
{
qh=0; qe=1;
sq[0].city=1;
sq[0].pre=0;
visited[0]=1;
while(qh!=qe)
{
qh=qh+1;
for(i=0;i<n;i++)
if(jz[sq[qh].city][i]==1&&visited[i]==0)
{
qe=qe+1;
sq[qe].city=i;
sq[qe].pre=qh;
visited[i]=1;
if(sq[qe].city==7)
{
out();
return ;
}
}

}

printf("Non solution.\n");
}

void out()
{
printf("%c",city_name[sq[qe].city]);
while(sq[qe].pre!=0)
{
qe=sq[qe].pre;
printf("<--%c",city_name[sq[qe].city]);
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: