先访问顺序为:
(1,1) -- (3,2) -- (5,3) -- (5,1) -- (4,4) -- (5,2) -- (2,3) -- (4,2) -- (5,4) -- (3,5) -- (4,3) -- (5,5)。
(4)采用广度优先搜索编写的源程序。
#include <iostream>
using namespace std;
#define N 51
struct Node
{
int x;
int y;
};
int main()
{
int n,m;
int dx[4]={1,1,2,2};
int dy[4]={-2,2,-1,1};
int visit[N][N]={0};
Node q[N*N],cur,next; // q为队列
int front,rear,i,x,y,t; // front为队头指针,rear队尾指针
cin>>n>>m;
front=rear=0; // 队列q初始化
cur.x=1; cur.y=1;
visit[1][1]=-1; // 点(1,1)为出发点,无前驱结点
q[rear++]=cur; // 初始结点入队
bool flag= false; // 置搜索成功标志flag为假
cout<<"结点访问顺序为:";
while(rear!=front && !flag) // 队列不为空
{
cur=q[front++]; // 队头元素出队
cout<<"("<<cur.x<<","<<cur.y<<") -- ";
if (cur.x==n && cur.y==m)
{
flag=true;
x=n; y=m;
cout<<endl;
cout<<"行走路径为:";
while (visit[x][y]!=-1)
{
cout<<"("<<x<<","<<y<<") <-- ";
t=visit[x][y];
x=t/100;
&n