zoukankan      html  css  js  c++  java
  • poj1050 To the Max

    /*
    题目:
        求最大子矩阵的和
    分析:
        我的做法:
        0 -2 -7 0 
        9 2 -6 2 
        -4 1 -4 1 
        -1 8 0 -2 
        我们可以按每一行计算从j开始到k结束的该段和,用dp[i][j][k]
        表示第i行的元素从下标j开始到k结束的和,把每一行的都求出,
        从而转化为求每一列的最大子序和,本例中,
        先求dp[0][0][0] = a[0][0],dp[0][0][1] = a[0][0]+a[0][1],...
        从而求完n行,时间复杂度为O(n*n*n),然后每一列dp根据一维最大
        子序列和来计算,算出最大的和即为最大子矩阵的和,时间总复杂度为O(n*n*n)
    */
    #include <iostream>
    using namespace std;
    #define X 101
    int a[X][X];
    int dp[X][X][X];
    int main()
    {
        freopen("sum.in","r",stdin);
        freopen("sum.out","w",stdout);
        int n;
        while(cin>>n)
        {
            int i,j,k;
            for(int i=0;i<n;i++)
                for(int j=0;j<n;j++)
                    cin>>a[i][j];
            int temp;
            for(i=0;i<n;i++)        //求i行从j开始到k结束的该段和
            {
                for(j=0;j<n;j++)        //从j开始
                {
                    temp = 0;
                    for(k=j;k<n;k++)    //到k结束
                    {
                        temp+=a[i][k];
                        dp[i][j][k] = temp;
                    }
                }
            }
            int max = -128;
            int sum;
            for(j=0;j<n;j++)    //转化为一维dp计算
            {
                for(k=j;k<n;k++)
                {
                    sum = 0;
                    for(i=0;i<n;i++)
                    {
                        sum+=dp[i][j][k];
                        if(sum>max)
                            max = sum;
                        if(sum<0)
                            sum = 0;
                    }
                }
            }
            cout<<max<<endl;
        }
        return 0;
    }
  • 相关阅读:
    spring mvc实现登录验证码
    sqlite可视化工具推荐
    【转载】oracle更新语法
    解决首次访问jenkins,输入默认密码之后,一直卡住问题
    Selenium+java
    ubuntu16.04安装Ros(kinetic版本)【亲测好用】
    Selenium+java
    Selenium+java
    Selenium+Java
    Selenium+java
  • 原文地址:https://www.cnblogs.com/yejinru/p/2374713.html
Copyright © 2011-2022 走看看