100 Accepted

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

代码

#include<bits/stdc++.h>
using namespace std;
char str[101][101];
int n,m;
int maxn = -1,minn = 1000000,vis[101][101],d[4][2] = {1,-1,1,1,-1,-1,-1,1};
int f(int x,int y,int cnt)
{
    vis[x][y] = 1;
    if(str[x][y]=='S')
        cnt++;
    char ch;
    if(str[x][y]=='L')
        ch = 'Q';
    if(str[x][y]=='Q')
        ch = 'B';
    if(str[x][y]=='B')
        ch = 'S';
    if(str[x][y]=='S')
        ch = 'L';
    for(int i=0;i<4;i++)
    {
        int nx=x+d[i][0],ny=y+d[i][1];
        if(nx<=n && nx>=1 && ny<=m && ny>=1)
        {
            if(str[nx][ny]==ch && str[nx][ny]=='L' && vis[nx][ny]==1)
                return -1;
            if(vis[nx][ny]==0 && str[nx][ny]==ch)
                f(nx,ny,cnt);
        }
    }
    return cnt;
}
int main()
{
    cin >> n >>  m;
    for(int i=1;i<=n;i++)
    {
        for(int j=1;j<=m;j++)
        {
            cin >> str[i][j];
        }
    }
    for(int i=1;i<=n;i++)
    {
        for(int j=1;j<=m;j++)
        {
            if(str[i][j]=='L' && vis[i][j]==0)
                int ans=f(i,j,0),maxn = max(ans,maxn),minn = min(minn,ans);
            if(minn==-1)
            {
                cout << -1;
                return 0;
            }
        }
    }
    cout << maxn;
    return 0;
}

信息

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