水题,读题要仔细。。。
#include<cstdio>
#include<algorithm>
#include<cstring>
using namespace std;
const int N=25;
const int minn=-99999999;
int map[N][N],dp[N][N];
int main()
{
int n,m;
while(~scanf("%d%d",&n,&m))
{
if(!n&&!m) break;
memset(dp,0,sizeof(dp));
for(int i=1;i<=n;i++)
for(int j=1;j<=m;j++)
scanf("%d",&map[i][j]);
int x,y,maxn=minn;
for(int i=1;i<=n;i++)
for(int j=1;j<=m;j++)
{
if((i-1)>=1)
{
if(map[i][j]*map[i-1][j]>0)
dp[i][j]-=abs(map[i-1][j]);
else
dp[i][j]+=abs(map[i-1][j]);
}
if((i+1)<=n)
{
if(map[i][j]*map[i+1][j]>0)
dp[i][j]-=abs(map[i+1][j]);
else
dp[i][j]+=abs(map[i+1][j]);
}
if((j-1)>=1)
{
if(map[i][j]*map[i][j-1]>0)
dp[i][j]-=abs(map[i][j-1]);
else
dp[i][j]+=abs(map[i][j-1]);
}
if((j+1)<=m)
{
if(map[i][j]*map[i][j+1]>0)
dp[i][j]-=abs(map[i][j+1]);
else
dp[i][j]+=abs(map[i][j+1]);
}
if(maxn<dp[i][j])
{
x=i;y=j;maxn=dp[i][j];
}
}
printf("%d %d %d\n",x,y,dp[x][y]);
}
}