C++ 寻找最大值阵列

C++ 寻找最大值阵列,c++,arrays,algorithm,C++,Arrays,Algorithm,我不明白这段代码是如何找到所有整数之和最大的矩形或正方形的,特别是加法和减法是如何在for循环中工作的 如果这种方法或算法有名字,请告诉我 代码是- #include <iostream> #include <limits.h> using namespace std; int main() { int n=3,a[3][3]={-1,1,2,0,3,4,0,-1,0}; int i,j,k,l; for(i=0; i<n; i++) {

我不明白这段代码是如何找到所有整数之和最大的矩形或正方形的,特别是加法和减法是如何在for循环中工作的

如果这种方法或算法有名字,请告诉我 代码是-

#include <iostream>
#include <limits.h>
using namespace std;

int main()
{
int n=3,a[3][3]={-1,1,2,0,3,4,0,-1,0};
int i,j,k,l;

for(i=0; i<n; i++)
    {
        for(j=0; j<n; j++)
        {
            if(i>0) a[i][j]+=a[i-1][j];
            if(j>0) a[i][j]+=a[i][j-1];
            if(i>0&&j>0) a[i][j]-=a[i-1][j-1];
        }
    }

int ans=INT_MIN;
for(i=0; i<n; i++)
{
    for(j=0; j<n; j++)
    {
        for(k=i; k<n; k++)
        {
            for(l=j; l<n; l++)
            {
                int temp=a[k][l];
                if(i>0) temp-=a[i-1][j];
                if(j>0) temp-=a[i][j-1];
                if(i>0 && j>0) temp+=a[i-1][j-1];
                if(temp>ans) ans=temp;
            }
        }
    }
}
cout<<ans;
return 0;

}
#包括
#包括
使用名称空间std;
int main()
{
int n=3,a[3][3]={-1,1,2,0,3,4,0,-1,0};
int i,j,k,l;
对于(i=0;i0)a[i][j]+=a[i][j-1];
如果(i>0&&j>0)a[i][j]=a[i-1][j-1];
}
}
int ans=int_MIN;
对于(i=0;i0)temp+=a[i-1][j-1];
如果(温度>ans)ans=温度;
}
}
}
}

请再具体一点。你的问题是什么?你不应该问这样的问题:“这是我的代码,它在做什么?”看看。我希望你能理解a-=b=>a=a-b