分析:简单的BFS
# include <stdio.h>
struct node
{
int x,y,pre;
}q[30];
int map[10][10];
void Print(int i)
{
if(q[i].pre!=-1)
Print(q[i].pre);
printf("(%d, %d)\n",q[i].x,q[i].y);
}
void Bfs(int x0,int y0)
{
int i,a,b,front=0,rear=0;
int dx[4]={1,-1,0,0},dy[4]={0,0,-1,1};
q[rear].x=x0;
q[rear].y=y0;
q[rear++].pre=-1;
while(front<rear)
{
for(i=0;i<4;i++)
{
a=q[front].x+dx[i];
b=q[front].y+dy[i];
if(a<0||a>=5||b<0||b>=5||map[a][b])
continue;
map[a][b]=1;
q[rear].x=a;
q[rear].y=b;
q[rear++].pre=front;
if(a==4&&b==4)
{
Print(rear-1);
return;
}
}
front++;
}
}
int main()
{
int i,j;
for(i=0;i<5;i++)
for(j=0;j<5;j++)
scanf("%d",&map[i][j]);
Bfs(0,0);
return 0;
}