#include <iostream>
#include <cmath>
#include <algorithm>
using namespace std;
int bfs[4][2]={{0,-1},{0,1},{-1,0},{1,0}},sum;
int mt[20][20];
int bb(int h,int l,int num,int m,int n)
{
	int i;
    sum=0;
    for (i=0;i<4;i++)
    {
            
          if(num>0)
		  {
			  if (h+bfs[i][0] <0 ||  l+bfs[i][1]<0 ||h+bfs[i][0] >=m || l+bfs[i][1] >=n)
                continue ;
			  else
			  {
				  if(mt[h+bfs[i][0]][l+bfs[i][1]]>0)
                        sum -=mt[h+bfs[i][0]][l+bfs[i][1]];
				  else
                        sum +=abs(mt[h+bfs[i][0]][l+bfs[i][1]]);
			  }
		  }
		  else
		  {
			  if (h+bfs[i][0] <0 ||  l+bfs[i][1]<0 ||h+bfs[i][0] >=m || l+bfs[i][1] >=n)
				  continue ;
			  else
			  {
				  //if(mt[h+bfs[i][0]][l+bfs[i][1]]>0)
					  sum +=mt[h+bfs[i][0]][l+bfs[i][1]];
// 				  else
// 					  sum +=mt[h+bfs[i][0]][l+bfs[i][1]];
			  }
		  }
    } 
	return sum;
}
int main()
{
	int n,m,i,j;
	int h,l,max;
	while(cin>>m>>n,n&&m)
	{
		max = -1000;
        for (i=0;i<m;i++)
        {
			for (j=0;j<n;j++)
			{
				cin>>mt[i][j];
			}
        }
        for (i=0;i<m;i++)
        {
			for (j=0;j<n;j++)
			{
				sum = bb(i,j,mt[i][j],m,n);
				if(sum > max)
				{
					h=i;l=j;max=sum;
				}
				
			}
        }
		cout<<h+1<<" "<<l+1<<" "<<max<<endl;    
	}
	return 0;
}
主要的也就是分析过程,我的对于num<0的分析一开始错了,找了很久才AC。
2 3 5 -4 3 -6 3 7 0 0
1 2 11
原文:http://blog.csdn.net/xinwen1995/article/details/45619779