求最大子矩阵的和!和最长子序列和思想一样,不过,得将矩阵压缩! #include<stdio.h> #include<string.h> #define max 110 int a[max][max]; int dp[max][max]; main() { int n,m; int i,j,k; int sum,zmax; while(scanf("%d",&n)!=EOF) { memset(dp,0,sizeof(dp)); for(i=0;i<n;i++) for(j=0;j<n;j++) scanf("%d",&a[i][j]); zmax=0; for(i=0;i<n;i++) { for(j=i;j<n;j++) { sum=0; for(k=0;k<n;k++) { dp[j+1][k]=dp[j][k]+a[j][k]; sum+=(dp[j+1][k]-dp[i][k]); if(sum>zmax) zmax=sum; if(sum<0) sum=0; } } } printf("%d/n",zmax); } }