H
#include <iostream>
//#include <string>
//#include <iomanip>
#include <cmath>
using namespace std;
int a[4][2] = {
1,0,
0,1,
-1,0,
0,-1
};
int b[30][2], c[30][2], __min=999,_min=0;
void he(int maze[5][5],int x,int y)
{
if (_min > __min)
return;
if (x == 4 && y == 4)
{
if (_min < __min)
{
__min = _min;
for (int i = 0;i < __min;i++)
{
c[i][0] = b[i][0];
c[i][1] = b[i][1];
//cout << "("<<b[i][0] << " " << b[i][1]<<")" << endl;
}
}
return;
}
int tx, ty;
for (int i = 0;i < 4;i++)
{
tx = x+a[i][0], ty = y+a[i][1];
if (maze[tx][ty] == 0&&tx>=0&&tx<=4&&ty>=0&&ty<=4)
{
maze[tx][ty] = 1;
_min++;
//cout << tx << " " << ty << endl;
b[_min][0] = tx, b[_min][1] = ty;
he(maze, tx, ty);
maze[tx][ty] = 0;
_min--;
}
else tx=x,ty=y;
}
}
int main()
{
int maze[5][5];
for (int i = 0;i < 5;i++)
for (int i1 = 0;i1 < 5;i1++)
cin >> maze[i][i1];
int x=0, y=0;
b[0][0] = 0, b[0][1] = 0;
he(maze, x, y);
//cout << min << endl;
c[__min][0] = 4, c[__min][1] = 4;
for (int i = 0;i <= __min;i++)
{
cout << "(" << c[i][0] << ", " << c[i][1] << ")" << endl;
}
}
dfs类的水题,没有坑难点