腾讯的题目,一条简单的搜索题目,适合初学者练习代码能力,或者是高手休息脑子的题,呵呵,不需要动脑了,只动手打代码就过了。
不过腾讯这故事有点坏啊,给人透露了两个信息:
1 腾讯不拘一格降人才
2 进入腾讯就可以屌丝逆袭了
腾讯是不是还想说腾讯的mm特别多?
呵呵,出题不忘给自己宣传一下。
#include <stdio.h>
#include <limits.h>
const int MAX_NM = 20;
int N, M;
int matrix[MAX_NM][MAX_NM];
inline int abs(int a) { return a < 0 ? -a : a; }
inline int getCharm(int i, int j)
{
int charmVal = 0;
if (i>0)
{
if ((matrix[i-1][j]>>31) ^ (matrix[i][j]>>31))
charmVal += abs(matrix[i-1][j]);
else charmVal -= abs(matrix[i-1][j]);
}
if (i+1 < N)
{
if ((matrix[i+1][j]>>31) ^ (matrix[i][j]>>31))
charmVal += abs(matrix[i+1][j]);
else charmVal -= abs(matrix[i+1][j]);
}
if (j>0)
{
if ((matrix[i][j-1]>>31) ^ (matrix[i][j]>>31))
charmVal += abs(matrix[i][j-1]);
else charmVal -= abs(matrix[i][j-1]);
}
if (j+1 < M)
{
if ((matrix[i][j+1]>>31) ^ (matrix[i][j]>>31))
charmVal += abs(matrix[i][j+1]);
else charmVal -= abs(matrix[i][j+1]);
}
return charmVal;
}
int main()
{
while (scanf("%d %d", &N, &M) && N)
{
for (int i = 0; i < N; i++)
{
for (int j = 0; j < M; j++)
{
scanf("%d", &matrix[i][j]);
}
}
int u, v, maxCharm = INT_MIN;
for (int i = 0; i < N; i++)
{
for (int j = 0; j < M; j++)
{
int charmVal = getCharm(i, j);
if (maxCharm < charmVal)
{
maxCharm = charmVal;
u = i, v = j;
}
}
}
printf("%d %d %d\n", u+1, v+1, maxCharm);
}
return 0;
}