</pre><pre name="code" class="plain">#include <stdio.h>
#include <stdlib.h>
int main(void)
{
int num[20][20] = {0};
int row, column;
int i, j;
scanf("%d %d", &row, &column);
// int **num;
// num = (int **) malloc(row * sizeof(int *));
// for(i = 0; i < row; i++)
// num[i]=(int *) malloc(column * sizeof(int));
for(i = 0; i < row; i++)
for(j = 0; j < column; j++)
scanf("%d", &num[i][j]);
// {
// for(i = 0; i < 20; i++)
// {
// for(j = 0; j < 20; j++)
// printf("%-2d", num[i][j]);
// printf("\n");
// }
// }
// 不取第1行、第row行
// 不取第1列、第column列
int r = 1;
for(i = 1; i < row - 1; i++)
for(j = 1; j < column - 1; j++)
{
if( num[i][j] > num[i-1][j] && // 上
num[i][j] > num[i+1][j] && // 下
num[i][j] > num[i][j-1] && // 左
num[i][j] > num[i][j+1] ) // 右
{
// printf("%d 第%d行,第%d列\n", num[i][j], i + 1, j + 1);
printf("%d %d %d\n", num[i][j], i + 1, j + 1);
r = 0;
}
}
if(r == 1)
printf("None %d %d", row, column);
return 0;
}
/*
测试点3错误。
自我判断:应该是判断的条件不完全正确
进过无数次的比较发现:
这个顺序是正确的
num[i][j] > num[i-1][j] && // 上
num[i][j] > num[i+1][j] && // 下
num[i][j] > num[i][j-1] && // 左
num[i][j] > num[i][j+1] // 右
而我原来if的条件:
num[i][j] > num[i][j - 1] && // 左
num[i][j] > num[i][j + 1] && // 右
num[i][j] > num[i + 1][j] && // 下
num[i][j] > num[i - 1][j] // 上
打印出400个数就可以看出,必须先满足左、上的判断就可以,
不然会被短路
*/