PAT乙级 1068.万绿丛中一点红

#include<iostream>
#include<algorithm>
#include<cmath>
#include<math.h>
using namespace std;
long long num[1010][1010];
int main()
{
    int m,n,tol,sum=0,x=0,y=0;
    cin>>m>>n>>tol;
    for(int i=0;i<n;i++)
    {
        for(int j=0;j<m;j++)
            cin>>num[i][j];
    }
    for(int i=0;i<n;i++)
    {
        for(int j=0;j<m;j++)
        {
            int num1[8]={0};
            if(((i-1)>=0)&&((i-1)<n)&&((j-1)>=0)&&((j-1)<m))
                num1[0]=abs(num[i-1][j-1]-num[i][j]);
            else
                num1[0]=-1;
            if(((i-1)>=0)&&((i-1)<n)&&(j>=0)&&(j<m))
                num1[1]=abs(num[i-1][j]-num[i][j]);
            else
                num1[1]=-1;
            if(((i-1)>=0)&&((i-1)<n)&&((j+1)>=0)&&((j+1)<m))
                num1[2]=abs(num[i-1][j+1]-num[i][j]);
            else
                num1[2]=-1;
            if((i>=0)&&(i<n)&&((j-1)>=0)&&((j-1)<m))
                num1[3]=abs(num[i][j-1]-num[i][j]);
            else
                num1[3]=-1;
            if((i>=0)&&(i<n)&&((j+1)>=0)&&((j+1)<m))
                num1[4]=abs(num[i][j+1]-num[i][j]);
            else
                num1[4]=-1;
            if(((i+1)>=0)&&((i+1)<n)&&((j-1)>=0)&&((j-1)<m))
                num1[5]=abs(num[i+1][j-1]-num[i][j]);
            else
                num1[5]=-1;
            if(((i+1)>=0)&&((i+1)<n)&&(j>=0)&&(j<m))
                num1[6]=abs(num[i+1][j]-num[i][j]);
            else
                num1[6]=-1;
            if(((i+1)>=0)&&((i+1)<n)&&((j+1)>=0)&&((j+1)<m))
                num1[7]=abs(num[i+1][j+1]-num[i][j]);
            else
                num1[7]=-1;
            bool manzu=false;
            for(int z=0;z<8;z++)
            {
                if(num1[z]==-1)
                    continue;
                else
                {
                    if(num1[z]<=tol)
                    {
                        manzu=true;
                        break;
                    }
                }
            }
            if(!manzu)
            {
                int flag=0;
                bool faker1=false;
                for(int z1=0;z1<m;z1++)
                {
                    for(int z2=0;z2<n;z2++)
                    {
                        if(num[z1][z2]==num[i][j]&&z1!=i&&z2!=j)
                        {
                            flag=1;
                            break;
                        }
                    }
                    if(flag==1)
                    {
                        faker1=true;
                        break;
                    }
                }
                if(!faker1)
                    sum++,x=i,y=j;
            }
        }
    }
    if(sum==1)
        cout<<"("<<y+1<<", "<<x+1<<"): "<<num[x][y]<<endl;
    else
    {
        if(sum>1)
            cout<<"Not Unique\n";
        else
        {
            if(sum==0)
                cout<<"Not Exist\n";
        }
    }
    return 0;
}

发布了45 篇原创文章 · 获赞 1 · 访问量 6783

猜你喜欢

转载自blog.csdn.net/Ls_attack/article/details/79797901