#include<iostream>
#include<cstdio>
using namespace std;
int n,m;
int a[30][30];
int Count(int i,int j)
{
int sum=0;
if(i>0)
{
if(a[i][j]*a[i-1][j]<0)
sum+=abs(a[i-1][j]);
else
sum-=abs(a[i-1][j]);
}
if(j>0)
{
if(a[i][j]*a[i][j-1]<0)
sum+=abs(a[i][j-1]);
else
sum-=abs(a[i][j-1]);
}
if(i<n-1)
{
if(a[i][j]*a[i+1][j]<0)
sum+=abs(a[i+1][j]);
else
sum-=abs(a[i+1][j]);
}
if(j<m-1)
{
if(a[i][j]*a[i][j+1]<0)
sum+=abs(a[i][j+1]);
else
sum-=abs(a[i][j+1]);
}
return sum;
}
void run()
{
int i,j,r,c;
for(i=0;i<n;i++)
{
for(j=0;j<m;j++)
{
scanf("%d",&a[i][j]);
}
}
int Max=-9999999;
for(i=0;i<n;i++)
{
for(j=0;j<m;j++)
{
if(a[i][j]>0) continue;
int tmp=Count(i,j);
if(tmp>Max)
{
Max=tmp;
r=i+1;
c=j+1;
}
}
}
printf("%d %d %d\n",r,c,Max);
}
int main()
{
while(scanf("%d%d",&n,&m)!=EOF)
{
if(n==0 && m==0) break;
run();
}
return 0;
}2013腾讯编程马拉松初赛第0场(3月20日) HDU 4500
二维数组边界求和算法
最新推荐文章于 2019-01-09 10:53:38 发布
本文介绍了一个基于C++实现的算法,该算法用于计算一个二维整数数组中每个元素与其相邻元素之间的符号相反的绝对值之和,并找出使得这个和最大的元素位置及其对应的和值。
186

被折叠的 条评论
为什么被折叠?



