100 Accepted

# 状态 分数 耗时 内存占用
#1 Accepted 10 5ms 7.6 MiB
#2 Accepted 10 5ms 7.6 MiB
#3 Accepted 10 2ms 7.6 MiB
#4 Accepted 10 1ms 7.6 MiB
#5 Accepted 10 1ms 7.6 MiB
#6 Accepted 10 5ms 7.6 MiB
#7 Accepted 10 5ms 7.6 MiB
#8 Accepted 10 7ms 7.6 MiB
#9 Accepted 10 1ms 7.6 MiB
#10 Accepted 10 7ms 7.6 MiB

代码

#include<bits/stdc++.h>
using namespace std;
int main()
{
	int n,m,num=0,flag;
	char b[4]{'L','Q','B','S'};
	cin>>n>>m;
	char a[n+1][m+1];
	int c[n+1][m+1];
	for(int i=1;i<=n;i++)
	{
		for(int j=1;j<=m;j++)
		{
			cin>>a[i][j];
			c[i][j]=0;//是否有效步的标示数字
		}
	}
	while (1)
	{
		flag=0;	
		for(int i=1;i<=n;i++)
		{
			for(int j=1;j<=m;j++)
			{
				if((a[i][j]==b[num%4]&&c[i][j]==1)||(num==0&&a[i][j]==b[num%4]))
				{
					c[i][j]=0;//在判断时要用这个值,后面要还原。
					if(a[i-1][j]==b[(num+1)%4])
					{
						flag=1;
						c[i-1][j]=1;
					}
					 if(a[i+1][j]==b[(num+1)%4])
					{
						flag=1;
						c[i+1][j]=1;
					}
					 if(a[i][j-1]==b[(num+1)%4])
					{
						flag=1;
						c[i][j-1]=1;
					}
					 if(a[i][j+1]==b[(num+1)%4])
					{
						flag=1;
						c[i][j+1]=1;
					}
				}
			}
		}
		if(flag==0)//不能继续走了,找不到下一步,则退出寻找
		{
			cout<<(num+1)/4;
			return 0;
		}
		if(num>2*(n+m))//无限循环
		{
			cout<<-1;
			return 0;
		}
		num++;//继续走下一步
	}
	return 0;
}

信息

递交者
题目
LQ1074  蓝桥杯赛迷宫
比赛
蓝桥杯省赛历年真题
语言
C++ 17 (O2)
递交时间
10 个月前
评测时间
10 个月前
分数
100
总耗时
38ms
峰值内存
7.6 MiB