洛谷 [语言月赛 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;
}
posted @ 2025-08-25 14:37  CCCsuper  阅读(50)  评论(0)    收藏  举报
萌ICP备20256293号