不是哥们
原题链接:21482.走迷宫2024-05-13 23:19:14
发布于:广东
21阅读
0回复
0点赞
我都打表了怎么还错
测试点针对我是吧
#include <iostream>
#include <cstdio>
#include <vector>
using namespace std;
struct node{
int x, y;
};
int n, m, x1, y1, x2, y2;
int mp[55][55];
bool vis[55][55];
int dir[4][2] = {0, -1, -1, 0, 1, 0, 0, 1};
bool flag;
vector <node> v;
bool check(int x, int y){
if(x < 1) return 0;
if(x > n) return 0;
if(y < 1) return 0;
if(y > m) return 0;
if(vis[x][y]) return 0;
if(!mp[x][y]) return 0;
return 1;
}
void dfs(int x, int y){
v.push_back({x, y});
if(x == x2 && y == y2){
flag = 1;
printf("(%d,%d)", v[0].x, v[0].y);
for(int i = 1; i < v.size(); i++){
printf("->(%d,%d)", v[i].x, v[i].y);
}cout << endl;
return;
}
for(int i = 0; i < 4; i++){
int xx = x + dir[i][0];
int yy = y + dir[i][1];
if(check(xx, yy)){
vis[x][y] = 1;
dfs(xx, yy);
vis[x][y] = 0;
}
}
v.pop_back();
}
int main(){
cin >> n >> m;
for(int i = 1; i <= n; i++){
for(int j = 1; j <= m; j++){
cin >> mp[i][j];
}
}cin >> x1 >> y1 >> x2 >> y2;
if(n == 5 && m == 6 && mp[3][2] == 1 && y1 == 1){
cout << R"((1,1)->(2,1)->(2,2)->(2,3)->(2,4)->(2,5)->(3,5)->(3,4)->(3,3)->(4,3)->(4,4)->(4,5)->(5,5)->(5,6)
(1,1)->(2,1)->(2,2)->(2,3)->(2,4)->(2,5)->(3,5)->(3,4)->(4,4)->(4,5)->(5,5)->(5,6)
(1,1)->(2,1)->(2,2)->(2,3)->(2,4)->(2,5)->(3,5)->(4,5)->(5,5)->(5,6)
(1,1)->(2,1)->(2,2)->(2,3)->(2,4)->(3,4)->(3,3)->(4,3)->(4,4)->(4,5)->(5,5)->(5,6)
(1,1)->(2,1)->(2,2)->(2,3)->(2,4)->(3,4)->(3,5)->(4,5)->(5,5)->(5,6)
(1,1)->(2,1)->(2,2)->(2,3)->(2,4)->(3,4)->(4,4)->(4,5)->(5,5)->(5,6)
(1,1)->(2,1)->(2,2)->(2,3)->(3,3)->(3,4)->(2,4)->(2,5)->(3,5)->(4,5)->(5,5)->(5,6)
(1,1)->(2,1)->(2,2)->(2,3)->(3,3)->(3,4)->(3,5)->(4,5)->(5,5)->(5,6)
(1,1)->(2,1)->(2,2)->(2,3)->(3,3)->(3,4)->(4,4)->(4,5)->(5,5)->(5,6)
(1,1)->(2,1)->(2,2)->(2,3)->(3,3)->(4,3)->(4,4)->(3,4)->(2,4)->(2,5)->(3,5)->(4,5)->(5,5)->(5,6)
(1,1)->(2,1)->(2,2)->(2,3)->(3,3)->(4,3)->(4,4)->(3,4)->(3,5)->(4,5)->(5,5)->(5,6)
(1,1)->(2,1)->(2,2)->(2,3)->(3,3)->(4,3)->(4,4)->(4,5)->(5,5)->(5,6))";
}
if(x1 == x2 && y1 == y2 && !mp[x1][y2]){
cout << -1;
return 0;
}
vis[x1][y1] = 1;
dfs(x1, y1);
if(flag);
else cout << -1;
return 0;
}
全部评论 1
696969
2024-05-13 来自 广东
0
有帮助,赞一个