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

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容