题解 洛谷P6369 【[COCI2006-2007#6] MARATON】

这道题目我们可以模拟

我们枚举每一个点,如果他是字母,那么我们就直接算出他附近点的坐标,看这个点是否可行

如果可行,我们就输出,并结束程序。

题目过于简单,我就不多说了

#include<bits/stdc++.h>
using namespace std;
int Side;
char Map[31][31];
int Dir[8][2]={1,0,0,1,-1,0,0,-1,1,-1,-1,1,1,1,-1,-1};
inline bool Check(int x,int y)
{
    register int i;
    for(i=0;i<8;i++)
    {
        if(Map[x+Dir[i][0]][y+Dir[i][1]]==Map[x][y]&&Map[x+Dir[i][0]+Dir[i][0]][y+Dir[i][1]+Dir[i][1]]==Map[x][y])
        {
            return true;
        }
    }
    return false;
}
int main()
{
    register int i,j;
    cin>>Side;
    memset(Map,'.',sizeof(Map));
    for(i=1;i<=Side;i++)
    {
        for(j=1;j<=Side;j++)
        {
            cin>>Map[i][j];
        }
    }
    for(i=1;i<=Side;i++)
    {
        for(j=1;j<=Side;j++)
        {
            if(Map[i][j]>='A'&&Map[i][j]<='Z')
            {
                if(Check(i,j))
                {
                    cout<<Map[i][j]<<endl;
                    return 0;
                }
            }
        }
    }
    cout<<"ongoing"<<endl;
    return 0;
}
View Code

 

posted @ 2020-08-08 14:20  Bushuai_Tang  阅读(143)  评论(0编辑  收藏  举报