hdu1081 To The Max

来源:互联网 发布:机明石墨电极编程视频 编辑:程序博客网 时间:2024/05/22 04:50

最大子矩阵和。。一个矩阵看成多个小的矩阵。。改了俩天。。真蛋疼

#include <cstdio>#include <cstring>#include <iostream>#include <algorithm>using namespace std;#define INF -9999int const MAXN = 110;int a[MAXN][MAXN],dp[MAXN][MAXN];inline int Max(int a,int b){    return a>b?a:b;}int main(){    int n;    while(~scanf("%d",&n)){        memset(a,0,sizeof(a));        memset(dp,0,sizeof(dp));        for(int i = 1;i <= n;i++){            for(int j = 1;j <= n;j++){                scanf("%d",&a[i][j]);            }        }        for(int i = 1;i <= n;i++){            for(int j = 1;j <= n;j++){                dp[i][j] += dp[i][j - 1] + a[i][j];            }        }        int m = INF;        for(int i = 1;i <= n;i++){            for(int j = i;j <= n;j++){                int sum = 0,s = 0;                for(int k = 1;k <= n;k++){                    if(sum < 0) sum = 0;                    sum += dp[k][j] - dp[k][i - 1];                    s = Max(s,sum);                }                m = Max(s,m);            }        }        printf("%d\n",m);    }    return 0;}




0 0
原创粉丝点击