中文题,水题,so,贴代码了。。
#include<iostream> #include<algorithm> #include<cstdio> using namespace std; int q[30][30]; int grade[30][30]; int n,m; bool in(int x,int y) { return x>=0&&x<n&&y>=0&&y<m; } int dir[4][2]={{1,0},{-1,0},{0,1},{0,-1}}; int main() { while(scanf("%d%d",&n,&m),n||m) { for(int i=0;i<n;i++) { for(int j=0;j<m;j++) { scanf("%d",&q[i][j]); } } memset(grade,0,sizeof(grade)); for(int i=0;i<n;i++) { for(int j=0;j<m;j++) { int ti,tj; for(int k=0;k<4;k++) { ti=i+dir[k][0]; tj=j+dir[k][1]; if(!in(ti,tj)) { continue; } if(q[i][j]*q[ti][tj]<0) { grade[i][j]+=abs(q[ti][tj]); } else { grade[i][j]-=abs(q[ti][tj]); } } } } int ansi=-1,ansj=-1; for(int i=0;i<n;i++) { for(int j=0;j<m;j++) { if(ansi==-1&&ansj==-1) { ansi=i; ansj=j; } if(grade[i][j]>grade[ansi][ansj]) { ansi=i; ansj=j; } } } printf("%d %d %d\n",ansi+1,ansj+1,grade[ansi][ansj]); } return 0; }