E - Mr. Frog’s Game

https://vjudge.net/problem/HDU-5926/origin

如果有相邻的一样,或者在最外面一圈的边上有一样的就Yes;

 

#include<iostream>
#include<cstdio>
using namespace std;
const int N=50;

int dx[]= {1,0,-1,0};
int dy[]= {0,1,0,-1};
int main()
{
    int t;
    cin>>t;
    int kase=1;
    while(t--)
    {
        int arr[N][N];
        int n,m;
        cin>>n>>m;
        for(int i=1; i<=n; i++)
        {
            for(int j=1; j<=m; j++)
                cin>>arr[i][j];
        }
        bool flag=false;
        for(int i=1; i<=m; i++)
        {
            for(int j=i+1; j<=m; j++)
            {
                if(arr[1][i]==arr[1][j]||arr[n][i]==arr[n][j])
                {
                    flag=1;
                    break;
                }
            }
            if(flag)
                break;
        }
        for(int i=1; i<=n; i++)
        {
            for(int j=i+1; j<=n; j++)
            {
                if(arr[i][1]==arr[j][1]||arr[i][m]==arr[j][m])
                {
                    flag=1;
                    break;
                }
            }
            if(flag)
                break;
        }
        for(int i=1; i<=n; i++)
        {
            for(int j=1; j<=m; j++)
            {
                for(int k=0; k<4; k++)
                {
                    int nowx=i+dx[k];
                    int nowy=j+dy[k];
                    if(nowx>n||nowy>m||nowx<1||nowy<1)
                        continue;
                    if(arr[i][j]==arr[nowx][nowy])
                    {
                        flag=1;
                        break;
                    }
                }
                if(flag)
                    break;
            }
            if(flag)
                break;
        }

        if(flag)
            printf("Case #%d: Yes\n",kase++);
        else
            printf("Case #%d: No\n",kase++);
    }
}

 

posted @ 2021-05-02 18:47  BlackSnow  阅读(51)  评论(0)    收藏  举报