标签:
#include<iostream>
#include<algorithm>
#include<stdio.h>
#include<string.h>
#include<queue>
using namespace std;
#define N 50
int j=0;
int maps[5][5];
int dir[4][2]= {{0, 1}, {0, -1}, {1, 0}, {-1, 0}};
typedef struct formation
{
int x, y, m, n;
} FORM;
FORM s, e, p[N], now, next;
void Search(int a, int b)
{
if(a!=-1&&b!=-1)
{
for(int i=0; i<j; i++)
{
if(p[i].x==a&&p[i].y==b)
{
Search(p[i].m, p[i].n);
printf("(%d, %d)", p[i].x, p[i].y);
}
}
}
}
void BFS()
{
int flag=0;
queue<FORM>que;
que.push(s);
p[j++]=s;
while(!que.empty())
{
now=que.front();
que.pop();
for(int i=0; i<4; i++)
{
next.x=now.x+dir[i][0];
next.y=now.y+dir[i][1];
if(next.x>=0&&next.y<5&&maps[next.x][next.y]==0)
{
maps[next.x][next.y]=1;
next.m=now.x;
next.n=now.y;
que.push(next);
p[j++]=next;
}
if(next.x==e.x&&next.y==e.y)
{
Search(next.x, next.y);
flag=1;
break;
}
}
if(flag==1)
break;
}
}
int main()
{
int i, j;
for(i=0; i<5; i++)
for(j=0; j<5; j++)
scanf("%d", &maps[i][j]);
s.x=0;
s.y=0;
s.m=-1;
s.n=-1;
e.x=4;
e.y=4;
printf("(%d, %d)", s.x, s.y);
BFS();
printf("(%d, %d)", e.x, e.y);
return 0;
}
标签:
原文地址:http://www.cnblogs.com/wazqWAZQ1/p/4651363.html