#include<bits/stdc++.h>
using namespace std;
int m, n;
int sx, sy, fx, fy;
int a[20][20];
int visx[50], visy[50];
bool flag = 0;
inline void kkksc03(int deep, int x, int y)
{
if(x <= 0 || x > m || y <= 0 || y > n) return;
if(x == fx && y == fy)
{
flag = 1;
for(int i = 1; i < deep; i++)
printf("(%d,%d)->", visx[i], visy[i]);
printf("(%d,%d)\n", fx, fy);
return;
}
if(a[x][y] == 1)
{
visx[deep] = x, visy[deep] = y;
a[x][y] = 0;
kkksc03(deep + 1, x, y - 1);
kkksc03(deep + 1, x - 1, y);
kkksc03(deep + 1, x, y + 1);
kkksc03(deep + 1, x + 1, y);
a[x][y] = 1;
}
}
int main()
{
cin >> m >> n;
for(int i = 1; i <= m; i++)
for(int j = 1; j <= n; j++)
cin >> a[i][j];
cin >> sx >> sy >> fx >> fy;
kkksc03(0, sx, sy);
if(flag == 0) cout << -1;
return 0;
}
只有答案是 −1 的是对的,可能是 dfs 哪里错了(?)