https://pintia.cn/problem-sets/994805260223102976/problems/994805265579229184
这题纸老虎啊,我以为有什么高级的算法,实际上还是一个一个遍历。
#include<iostream>
#include<math.h>
using namespace std;
int exist[20000000]={0};
int main() {
int m, n, flag=0, count=0, ok;
long long int tol;
string str;
cin >> m >> n >> tol;
long long int t, num[n][m];
for(int i=0; i<n; i++){
for(int j=0; j<m; j++){
cin >> num[i][j];
exist[num[i][j]]++;
}
}
for(int i=0; i<n; i++){
for(int j=0; j<m; j++){
ok=1;
if(i-1>=0 && j-1>=0 && abs(num[i][j] - num[i-1][j-1]) <= tol){
ok=0;
}
if(i-1>=0 && abs(num[i][j] - num[i-1][j]) <= tol){
ok=0;
}
if(i-1>=0 && j+1<m && abs(num[i][j] - num[i-1][j+1]) <= tol){
ok=0;
}
if(j-1>=0 && abs(num[i][j] - num[i][j-1]) <= tol){
ok=0;
}
if(j+1<m && abs(num[i][j] - num[i][j+1]) <= tol){
ok=0;
}
if(i+1<n && j-1>=0 && abs(num[i][j] - num[i+1][j-1]) <= tol){
ok=0;
}
if(i+1<n && abs(num[i][j] - num[i+1][j]) <= tol){
ok=0;
}
if(i+1<n && j+1<m && abs(num[i][j] - num[i+1][j+1]) <= tol){
ok=0;
}
if(ok==1 && exist[num[i][j]]==1){
count ++;
if(count == 1){
str="("+to_string(j+1)+", "+to_string(i+1)+"): "+to_string(num[i][j]);
}else{
str="Not Unique";
}
}
}
}
if(count == 0){
str="Not Exist";
}
cout << str << endl;
return 0;
}