#include<iostream>
using namespace std;
int k;
int flag = 0;
int m, n;
int sx, sy, ex, ey;
int map[1000][15];
int book[1000][15];
struct node{
int x;
int y;
}res[1000];
void pri(int x,int y){
cout << "(" << x << "," << y << ")";
}
void dfs(int x,int y){
if (x == ex && y == ey){
flag = 1;
pri(sx, sy);
cout << "->";
for (int i = 0; i < k; i++){
pri(res[i].x, res[i].y);
if (i!=k-1)
cout << "->";
}
cout << endl;
return;
}
for (int i = 0; i < 4; i++){
int dir[4][2] = { { 0, -1 }, { -1, 0 },{ 0, 1 }, { 1, 0 } };
int tx = x + dir[i][0];
int ty = y + dir[i][1];
if (tx <= m && tx > 0 && ty <= n && ty > 0 && book[tx][ty] == 0 && map[tx][ty]==1){
book[tx][ty] = 1;
res[k].x = tx;
res[k].y = ty;
k++;
dfs(tx, ty);
k--;
book[tx][ty] = 0;
}
}
}
int main(){
//初始化
cin >> m >> n;
for (int i = 1; i <= m; i++){
for (int j = 1; j <= n; j++){
cin >> map[i][j];
}
}
cin >> sx >> sy;
cin >> ex >> ey;
book[sx][sy] = 1;
dfs(sx, sy);
if (flag == 0) cout << "-1" << endl;
return 0;
}
洛谷p1238
最新推荐文章于 2025-05-05 14:10:20 发布