洛谷 [语言月赛 202508] 迷宫寻路 题解
这道题是个模拟题,就是模拟扶苏的移动方式并进行判断,如果出去了就输出现在走了几步,特别注意的是如果走了n*m步还是走不出去就cout<<-1;(把所有格子都走一遍了还是出不去,再走肯定会重复,重复了就代表会绕圈,答案就是出不去)
代码展示:
#include<bits/stdc++.h>
#define int long long
#define endl "\n"
#define fastio ios::sync_with_stdio(false);cin.tie(0);cout.tie(0)
using namespace std;
signed main()
{
fastio;
int n,m,q;
cin>>n>>m>>q;
int a[n+5][m+5];
for(int i=1;i<=n;i++)for(int j=1;j<=m;j++)cin>>a[i][j];
for(int i=1;i<=q;i++)
{
int x,y;
cin>>x>>y;
for(int i=0;;i++)
{
if(i>n*m)
{
cout<<-1<<"\n";
break;
}
if(x==0||y==0||x==n+1||y==m+1)
{
cout<<i<<"\n";
break;
}
if(a[x][y]==1)x--;
else if(a[x][y]==2)x++;
else if(a[x][y]==3)y--;
else y++;
}
}
return 0;
}

浙公网安备 33010602011771号