1068. 万绿丛中一点红(20)乙级

来源:互联网 发布:多益网络线上笔试题目 编辑:程序博客网 时间:2024/05/22 06:16

暴力破解

#include<iostream>#include<vector>#include<cmath>#include<map>using namespace std;vector<vector<int>> all;map<int,int> visited;int N, M, T;bool pd(int x, int y){    if (x - 1 >= 0 && y - 1 >= 0 && abs(all[x][y] - all[x - 1][y - 1]) <= T) return false;    if (x - 1 >= 0 && abs(all[x][y] - all[x - 1][y]) <= T) return false;    if (x - 1 >= 0 && y + 1 < M && abs(all[x][y] - all[x - 1][y + 1]) <= T) return false;    if (y - 1 >= 0 && abs(all[x][y] - all[x][y - 1]) <= T) return false;    if (y + 1 < M && abs(all[x][y] - all[x][y + 1]) <= T) return false;    if (x + 1 < N && y - 1 >= 0 && abs(all[x][y] - all[x + 1][y - 1]) <= T) return false;    if (x + 1 < N  && abs(all[x][y] - all[x + 1][y]) <= T) return false;    if (x + 1 < N && y + 1 < M && abs(all[x][y] - all[x + 1][y + 1]) <= T) return false;    return true;}int main(){    int cnt = 0;    int x, y;    cin >> M>>N>>T;    all.resize(N, vector<int>(M));    for (int t = 0;t < N;t++)        for (int i = 0;i < M;i++)        {            cin >> all[t][i];            visited[all[t][i]]++;        }    for (int t = 0;t < N;t++)        for (int i = 0;i < M;i++)            if (visited[all[t][i]]==1&&pd(t, i))            {                if (++cnt > 1) { cout << "Not Unique" << endl;return 0; }                x = t + 1;y = i + 1;            }    if (cnt == 0) cout << "Not Exist" << endl;    else printf("(%d, %d): %d\n", y, x, all[x - 1][y - 1]);}
0 0
原创粉丝点击