POJ1050【DP】

来源:互联网 发布:手机网络加速器破解版 编辑:程序博客网 时间:2024/05/17 07:52

题意:
求一个最大子矩阵和。
思路:
枚举行区间,然后求一个最大子序列和。
贴一发挫code…

#include <iostream>#include <cstdio>#include <string.h>#include <algorithm>using namespace std;typedef __int64 LL;const int N=1e2+10;int a[N][N];int dp[N];int main(){    int n;    scanf("%d",&n);    for(int i=1;i<=n;i++)        for(int j=1;j<=n;j++)        scanf("%d",&a[i][j]);    int ans;    ans=a[1][1];    for(int k=1;k<=n;k++)    {        for(int i=k;i<=n;i++)        {            for(int j=1;j<=n;j++)            {                if(i==k)                    dp[j]=a[i][j];                else                    dp[j]+=a[i][j];            }            int tmax=0;            for(int j=1;j<=n;j++)            {                if(tmax>0)                    tmax+=dp[j];                else                    tmax=dp[j];                if(tmax>ans)                    ans=tmax;            }        }    }    printf("%d\n",ans);    return 0;}/*40 -2 -7 09 2 -6 2-4 1 -4 1-1 8 0 -2*/
0 0
原创粉丝点击