不知道为什么不能全通过。网上说的注意点似乎都注意到了,绝对值函数(话说加了绝对值和不加,通过的测试点结果一样)abs也加了,测试点3总是答案错误,其他都ok。暂时想不通了,心塞。学习完map函数再回来看看好了
#include <stdio.h>
#include <stdlib.h>
int if_in_ary(long n,long ary[],int len);
int main(){
//count var
int i,j,k,cnt=0;
int M,N,TOL;
int mrk_x=0,mrk_y=0;
scanf("%d%d%d",&M,&N,&TOL);
long ary[N][M];
for(i=0;i<N;i++){
for(j=0;j<M;j++){
scanf("%ld",&ary[i][j]);
}
}
for(i=0;i<N;i++){
for(j=0;j<M;j++){
// int flag =0;
// printf("%d\n", ary[i][j]);
if(j+1<M && (abs(ary[i][j]-ary[i][j+1]))<=TOL){
continue;
}
if(j-1>-1 && (abs(ary[i][j]-ary[i][j-1]))<=TOL){
continue;
}
if(i+1<N && j+1<M && (abs(ary[i][j]-ary[i+1][j+1]))<=TOL){
continue;
}
if(i+1<N && j-1>-1 && (abs(ary[i][j]-ary[i+1][j-1]))<=TOL){
continue;
}
if(i+1<N && (abs(ary[i][j]-ary[i+1][j]))<=TOL){
continue;
}
if(i-1>-1 && j+1<M && (abs(ary[i][j]-ary[i-1][j+1]))<=TOL){
continue;
}
if(i-1>-1 && j-1>-1 && (abs(ary[i][j]-ary[i-1][j-1]))<=TOL){
continue;
}
if(i-1>-1 && (abs(ary[i][j]-ary[i-1][j]))<=TOL){
continue;
}
int num,num2=0;
for(k=0;k<N;k++){
num = if_in_ary(ary[i][j],ary[k],M);
// printf("%d\n", num);
if( num > 1) break;
if( num == 1){
num2++;
if(num2 >1 ) break;
}
}
if(num2 == 1){
// printf("%d %d\n", i,j);
// printf("%ld\n", ary[i][j]);
mrk_x = j;
mrk_y = i;
cnt++;
}
}
}
if(cnt==1){
printf("(%d, %d): %ld", mrk_x+1,mrk_y+1,ary[mrk_y][mrk_x]);
}else{
if(cnt == 0){
printf("Not Exist");
}else{
printf("Not Unique");
}
}
return 0;
}
int if_in_ary(long n,long ary[],int len){
int i,flag =0;
for(i=0;i<len;i++){
if(n == ary[i]){
flag++;
}
}
return flag;
}