代码实现:
#include<stdio.h>
#include<stdlib.h>
#include<math.h>
int Judge(int **a, int x, int y, int m, int n, int tol)
{
if (x - 1 >= 0 && y - 1 >= 0 && fabs(a[x][y] - a[x - 1][y - 1]) <= tol)
return 0;
if (x - 1 >= 0 && fabs(a[x][y] - a[x - 1][y]) <= tol)
return 0;
if (x - 1 >= 0 && y + 1 < n && fabs(a[x][y] - a[x - 1][y + 1]) <= tol)
return 0;
if (y - 1 >= 0 && fabs(a[x][y] - a[x][y - 1]) <= tol)
return 0;
if (y + 1 <n && fabs(a[x][y] - a[x][y + 1]) <= tol)
return 0;
if (x + 1 <m && y - 1 >= 0 && fabs(a[x][y] - a[x + 1][y - 1]) <= tol)
return 0;
if (x + 1 < m && fabs(a[x][y] - a[x + 1][y]) <= tol)
return 0;
if (x + 1 < m && y + 1 < n && fabs(a[x][y] - a[x + 1][y + 1]) <= tol)
return 0;
return 1;
}
int main()
{
int m, n, **pic, tol, index_i = -1, index_j = -1, color, cnt = 0;
scanf("%d %d %d", &n, &m, &tol);
pic = (int**)malloc(sizeof(int*)*m);
for (int i = 0; i < m; i++)
pic[i] = (int*)malloc(sizeof(int)*n);
for (int i = 0; i < m; i++)
for (int j = 0; j < n; j++)
scanf("%d", &pic[i][j]);
for (int i = 0; i < m; i++)
for (int j = 0; j < n; j++)
if (Judge(pic, i, j, m, n, tol) == 1)
{
int flag = 1;
for (int p = 0; p < m; p++)
for (int q = 0; q < n; q++)
if ((p != i || q != j) && pic[i][j] == pic[p][q])
flag = 0;
if (flag == 1)
cnt++, color = pic[i][j], index_i = i + 1, index_j = j + 1;
}
if (cnt == 1)
printf("(%d, %d): %d", index_j, index_i, color);
else if (cnt > 1)
printf("Not Unique");
else
printf("Not Exist");
return 0;
}