#include<iostream>#include<vector>#include<unordered_map>#include<algorithm>usingnamespace std;int m, n, limit;
vector<pair<int,int>> vr;
vector<vector<int>> v, vrefer;
unordered_map<int,int> mm;voidcompare(int x1,int y1,int x2,int y2){if(abs(v[x1][y1]- v[x2][y2])<= limit)
vrefer[x1][y1]= vrefer[x2][y2]=0;}intmain(){
cin >> m >> n >> limit;
v.resize(n, vector<int>(m));
vrefer.resize(n, vector<int>(m,1));for(int i =0; i < n; i++)for(int j =0; j < m; j++){
cin >> v[i][j];
mm[v[i][j]]++;}for(int i =0; i < n; i++)for(int j =0; j < m; j++){if(j != m -1){compare(i, j, i, j +1);if(i != n -1)compare(i, j, i +1, j +1);}if(i != n -1){compare(i, j, i +1, j);if(j !=0)compare(i, j, i +1, j -1);}if(vrefer[i][j]==1&& mm[v[i][j]]==1) vr.push_back(make_pair(i, j));}if(vr.size()==0) cout <<"Not Exist\n";elseif(vr.size()>1) cout <<"Not Unique\n";else cout <<"("<< vr[0].second +1<<", "<< vr[0].first +1<<"): "<< v[vr[0].first][vr[0].second]<< endl;return0;}
测试结果1
解题代码2(模仿柳神版)
#include<iostream>#include<vector>#include<unordered_map>#include<algorithm>usingnamespace std;int m, n, limit, X, Y, cnt =0;
vector<vector<int>> v;
unordered_map<int,int> mm;int dir[8][2]={{1,0},{1,1},{0,1},{-1,1},{-1,0},{-1,-1},{0,-1},{1,-1}};booljudge(int x,int y){for(int i =0; i <8; i++){int tx = x + dir[i][0];int ty = y + dir[i][1];if(tx >=0&& tx < m && ty >=0&& ty < n &&abs(v[x][y]- v[tx][ty])<= limit)returnfalse;}returntrue;}intmain(){
cin >> m >> n >> limit;
v.resize(n, vector<int>(m));for(int i =0; i < n; i++)for(int j =0; j < m; j++){
cin >> v[i][j];
mm[v[i][j]]++;}for(int i =0; i < n; i++)for(int j =0; j < m; j++)if(mm[v[i][j]]==1&&judge(i, j)){
X = i +1;
Y = j +1;
cnt++;}if(cnt ==0) cout <<"Not Exist\n";elseif(cnt >1) cout <<"Not Unique\n";else cout <<"("<< Y <<", "<< X <<"): "<< v[X -1][Y -1]<< endl;return0;}
1068 万绿丛中一点红解题代码1测试结果1解题代码2(模仿柳神版)测试结果2问题整理解题代码1#include<iostream>#include<vector>#include<unordered_map>#include<algorithm>using namespace std;int m, n, limit;vector<pair<int, int> > vr;vector<vector<int&