问题描述:二位平面图,每一个坐标都有值,正值或负值,求任意矩形中和的最大值问题
解决方案:求解图中每一个坐标为起点,求任意长度宽度的矩形的和
#include<iostream> #include<cstdio> using namespace std; int in[101][101],d[101][101],maxx,n; void ope(int bx, int by) { memset(d,0,sizeof(d)); int i,j,k; for(i=bx; i<=n; i++) for(j=by; j<=n; j++) { d[i][j]=d[i-1][j]+d[i][j-1]-d[i-1][j-1]+in[i][j]; if( d[i][j] > maxx ) maxx=d[i][j]; } } int main() { int i,j,k; while(cin >> n) { for(i=1; i<=n; i++) for(j=1; j<=n; j++) cin >> in[i][j]; //for(k=1; k<=n; k++){for(int l=1; l<=n; l++)cout<<in[k][l]<<" ";cout << endl;} maxx=-11111; for(i=1; i<=n; i++) for(j=1; j<=n; j++) { ope(i,j); } cout << maxx << endl; } return 0; }