算法设计:
2)将队首所指的城市所有可直通的城市入队(如果这个城市在队中出现过就不入队),然后将队首加1,得到新的队首城市。重复以上步骤,直到城市H入队为止。当搜到城市H时,搜索结束。
#include <iostream>
using namespace std;
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];
int n=8;
void out( ) //输出路径
{
cout<<"路径为:\n";
cout<<sq[qe].city;
while(sq[qe].pre!=-1)
{
qe=sq[qe].pre;
cout<<"->"<<sq[qe].city;
}
cout<<"\n";
}
void search( )
{
qh=-1;
qe=0;
sq[0].city=0;
sq[0].pre=-1;
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;
cout<<qe<<","<<i<<","<<qh<<"\n";
if (sq[qe].city == 7)
{
out( );
return;
}
cout<<"qw/";
}
}
printf("No avaliable way.");
}
main()
{
int i;
for (i=0;i<=n;i++)
visited[i] = 0;
search();
}