美文网首页
1068 万绿丛中一点红 (20 分)

1068 万绿丛中一点红 (20 分)

作者: 79d12e22ec53 | 来源:发表于2019-07-22 14:15 被阅读0次
#include <stdio.h>
#include <math.h>

#define LEN 1002

int isUnique(int arr[][LEN], int x, int y, int TOL) {
    if (abs(arr[y][x] - arr[y-1][x-1]) <= TOL //左上
        || abs(arr[y][x] - arr[y][x-1]) <= TOL //左
        || abs(arr[y][x] - arr[y+1][x-1]) <= TOL //左下
        || abs(arr[y][x] - arr[y-1][x]) <= TOL //上
        || abs(arr[y][x] - arr[y-1][x+1]) <= TOL //右上
        || abs(arr[y][x] - arr[y][x+1]) <= TOL //右
        || abs(arr[y][x] - arr[y+1][x+1]) <= TOL //右下
        || abs(arr[y][x] - arr[y+1][x]) <= TOL) { //下
        return 0;
    }
    return 1;
}
int arr[LEN][LEN] = {0};
int pixel[2 << 24] = {0};
int main() {
    int M, N, TOL, cnt = 0;
    scanf("%d %d %d", &M, &N, &TOL);
    for (int i = 1; i <= N; i++) {
        for (int j = 1; j <= M; j++) {
            scanf("%d", &arr[i][j]);
            pixel[arr[i][j]]++;
        }
    }
    int x, y, color;
    for (int i = 1; i <= N; i++) {
        for (int j = 1; j <= M; j++) {
            if (pixel[arr[i][j]] == 1) {
                if (isUnique(arr, j, i, TOL)) {
                    cnt++;
                    x = j;
                    y = i;
                    color = arr[i][j];
                    if (cnt == 2) {
                        break;
                    }
                }
            }
        }
        if (cnt == 2) {
            break;
        }
    }
    if (cnt == 2) {
        printf("Not Unique\n");
    } else if (cnt == 0) {
        printf("Not Exist\n");
    } else {
        printf("(%d, %d): %d", x, y, color);
    }
    return 0;
}

相关文章

网友评论

      本文标题:1068 万绿丛中一点红 (20 分)

      本文链接:https://www.haomeiwen.com/subject/cnxwlctx.html