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

#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;
}

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容