100 Accepted

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

代码

#include<iostream>
#include<algorithm>
#include<fstream>
using namespace std;
const int N=110;
char g[N][N];
int f[N][N];
int n,m;
bool wuxian;
int mstep,step=1;
int dx[4]={0,1,0,-1},dy[4]={1,0,-1,0}; 
void dfs(int x,int y){
	for(int i=0;i<4;i++){
		int xx=x+dx[i],yy=y+dy[i];
		if(xx<0||xx>n-1||yy<0||yy>m-1)continue;//越界跳过
		if((g[x][y]=='L' && g[xx][yy]=='Q')||(g[x][y]=='Q' && g[xx][yy]=='B')||
		(g[x][y]=='B' && g[xx][yy]=='S')||(g[x][y]=='S' && g[xx][yy]=='L')){
			if(f[xx][yy]){
				wuxian=true;
				return ;
			}
			f[xx][yy]=1;
			step++;
			mstep=max(mstep,step);
			dfs(xx,yy);
			f[xx][yy]=0;
			step--;
		} 	
	}
	return ;
} 
int main()
{
	//freopen("LQBS3.in","r",stdin);
	cin>>n>>m;
	for(int i=0;i<n;i++) cin>>g[i];
	for(int i=0;i<n;i++){
		for(int j=0;j<m;j++){
			if(g[i][j]=='L'){
				memset(f,0,sizeof(f));
				dfs(i,j);
			}
			if(wuxian){
				cout<<-1<<endl;
				return 0;
			}
		}
	}
	cout<<mstep/4<<endl;
 
	return 0;
}

信息

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