标签:
#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