看了好多文章,就了解一下,最大字段和、最大子矩阵的问题
https://blog.csdn.net/Double2hao/article/details/51727420 最大子矩阵--他动态规划的那一段代码我认为是有问题的
https://blog.csdn.net/lihao21/article/details/7216579
#include<cstdio>
#include<cstring>
int n;
int a[110][110];
int b[110];
int main()
{
while(scanf("%d",&n)!=EOF)
{
for(int i=0; i<n; i++)
for(int j=0; j<n; j++)
scanf("%d",&a[i][j]);
int Max = -32767;
for(int i=0; i<n; i++)
{
//数组b表示i~j行,对应列元素的和
//将二维动态规划问题转化为一维动态规划问题
memset(b, 0, sizeof(b));
for(int j=i; j<n; j++)
{
//下面是针对数组b求最大子段和的动态规划算法
int sum=0;
for(int k=0; k<n; k++)
{
b[k] += a[j][k];
if(sum>0) sum+= temp;
else sum=temp;
if(sum>max) max = sum;
}
}
}
printf("%d\n",Max);
}
return 0;
}