题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4500
解题报告:简单题,数据范围不大,直接暴力每个点,然后再比较出得分最大的点的位置和分数。

1 #include<cstdio> 2 #include<cstring> 3 #include<iostream> 4 #include<cmath> 5 using namespace std; 6 7 int mei[30][30],sco[30][30]; 8 int addx[4] = {-1,0,1,0}; 9 int addy[4] = {0,1,0,-1}; 10 11 int main() 12 { 13 int n,m; 14 while(scanf("%d%d",&n,&m),n+m) 15 { 16 for(int i = 1;i<= n;++i) 17 for(int j = 1;j<= m;++j) 18 scanf("%d",&mei[i][j]); 19 int M = -4000000,lx,ly; 20 for(int i = 1;i <= n;++i) 21 for(int j = 1;j <= m;++j) 22 { 23 int tot = 0; 24 for(int k = 0;k < 4;++k) 25 { 26 int xx = i + addx[k],yy = j + addy[k]; 27 if(xx < 1 || xx > n || yy < 1 || yy > m) 28 continue; 29 if(mei[xx][yy] * mei[i][j] < 0) 30 tot += abs(mei[xx][yy]); 31 else tot -= abs(mei[xx][yy]); 32 } 33 if(M < tot) 34 { 35 M = tot; 36 lx = i,ly = j; 37 } 38 } 39 printf("%d %d %d ",lx,ly,M); 40 } 41 return 0; 42 }