`
SaraWon
  • 浏览: 42846 次
  • 性别: Icon_minigender_2
  • 来自: 北京
社区版块
存档分类
最新评论

POJ 1050

阅读更多
POJ ACM第1050题的详细描述,请参照
http://acm.pku.edu.cn/JudgeOnline/problem?id=1050

题目意思:
给定包含有正负整型的二维数组,找出所有子矩阵的和的最大值。
如二维数组
0 -2 -7 0
9 2 -6 2
-4 1 -4 1
-1 8 0 -2
中和最大的子矩阵是
9 2
-4 1
-1 8
且最大和是15.

输入:
第一行是二维数组维数,其余多行是二维数组的元素,且数组由空格和空行分割。

输出:
子矩阵最大和。

实现原理:穷举行,然后转换为一维数组进行求解,代码如下:
#include<stdio.h>
//calculate the max sum of sub array of one-dimensional array
int max(int *b,int n)
{
    int sum=0,max=0,i=1;
    while(i<=n)
    {
       if(sum<0)
           sum=b[i];
       else
           sum+=b[i];
       if(max<sum)
           max=sum;
       i++;
    }
    return max;
}
//main method
int main()
{

    int a[][];//输入二维数组
    int num[101];//转换为一维之后
    int t[101][101];//[b]t[i][j]代表第j列前i行元素之和[/b]
    int Max=0,i,j,n,p,q,tempmax,rowcount,m;

    //输入二维数组,参见另一篇文章
    
    //calculate the sum of rows before i
    for(i=0;i<=n;i++)
    {
        for(j=1;j<=n;j++)
        {
            if(i==0)
                t[i][j]=0;
            else
            {
                int temp=0;
                for(m=1;m<=i;m++)
                    temp+=a[m][j];
                t[i][j]=temp;
            }
        }
    }
    //穷举行,然后转换为一维数组求解
    rowcount=1;//每次选取rowcount行
    while(rowcount<=n)
    {
        for(p=1;p<=n-rowcount+1;p++)
        {
            //[b]从第m行到第n行的和等于t[n][j]-t[m-1][j][/b]
            for(q=1;q<=n;q++)
                num[q]=t[p+rowcount-1][q]-t[p-1][q];
            tempmax=max(num,n);
            if(Max<tempmax)
                Max=tempmax;
        }
        rowcount++;
    }
    printf("%d\n",Max);
}

分享到:
评论

相关推荐

    poj 1050

    poj online judge 1050 最大子矩阵动态规划解决

    POJ 1000 1003 1004 1005 1014 1017 1050 1080 1088

    4. POJ 1050: 这个编号的题目可能是某个特定主题的挑战,比如字符串匹配、组合数学或数值计算。解题者需要灵活应用已学知识,同时可能需要研究特定领域的算法。 5. POJ 1080 - 1088: 随着编号接近尾声,题目难度...

    POJ题目分析与理解

    在POJ题目中,我们可以看到一些经典的算法题目,例如,动态规划的题目,例如,1037 A decorative fence、1050 To the Max、1088 滑雪等。这类题目需要程序员使用动态规划算法来解决问题。 此外,POJ题目还包括一些...

    华中科技大学_2022年春_算法实践报告

    在本次华中科技大学春季学期的算法实践中,学生完成并通过了多项算法题目,其中包括POJ1050、POJ1042、POJ1201以及POJ1328。每道题目的解题报告都详细地记录了问题描述、题目分析、算法设计、性能分析以及运行测试等...

    算法实验(动态规划-12-16题)1

    第 12 题:poj1050 To the Max 这道题目要求我们找到一个给定矩阵中的最大子矩阵和。这道题目可以使用动态规划来解决。我们可以使用 Kadane's algorithm 来解决这个问题,该算法可以在 O(n^3) 的时间复杂度内解决...

    北大POJ部分题目答案(一些基础题目)

    很多的POJ题目答案!1000~1008,1011~1014,1016,1017,1019,1028,1032,1045,1046,1047,1050,1061,1067,1068,1088,1102,1159,1163,1183,1207,1218,1226,1247,1256,1258,1298,1316,1323,...

    算法分类以及POJ题目分类

    2. 1050 To the Max:求解最大值问题,可能需要构建一个二维数组来存储子问题的解。 3. 1125 Stockbroker Grapevine:涉及股票交易策略,需要考虑时间序列上的决策。 4. 1141 Brackets Sequence:与括号匹配相关,...

    poj dp总结,动态规划分类

    - **1018, 1050, 1083, 1088, 1125, 1143, 1157, 1163, 1178, 1179, 1189, 1208, 1276, 1322, 1414, 1456, 1458, 1609, 1644, 1664, 1690, 1699, 1740, 1742, 1887, 1926, 1936, 1952, 1953, 1958, 1959, 1962, ...

    poj3045源码

    【标题】"poj3045源码"所涉及的知识点主要集中在程序设计与算法领域,特别是针对编程竞赛中的问题解决。POJ(Problem Online Judge)是一个在线编程评测系统,它提供了各种算法题目供参赛者练习和提交代码。在这个...

    POJ各题算法分类和题目推荐 ACM必看

    * 1050 To the Max:本题目需要使用动态规划来计算最大subset sum。 * 1088 滑雪:本题目使用动态规划来计算滑雪的最短距离。 * 1125 Stockbroker Grapevine:本题目使用动态规划来计算股票交易的最大收益。 * 1141 ...

    POJ.rar_pku ac_pku.1050

    标题中的"POJ.rar_pku ac_pku.1050"暗示了这是一个与北京大学(Peking University, 简称PKU)编程竞赛相关的压缩文件,其中包含了作者通过验证(Passed All Cases, 简称AC)的代码,具体是针对PKU题目编号1050的问题。...

    poj上算法题目分类

    - 1037, 1050, 1088, 1125, 1141, 1159, 1160, 1163, 1458, 1579, 1887, 1953, 2386 **关键知识点:** - **贪心算法**:在每一步都选择局部最优解。 - **回溯算法**:采用试探性的策略来搜索所有可能的解决方案。 -...

    poj经典动态规划题目解题报告

    poj经典动态规划题目解题报告,包括经典的动态规划题目20多道,可以作为学习动态规划系统的资料,包括题目: Pku acm 1179 Polygon Pku acm 1125 Stockbroker Grapevine Pku acm 1160 post office Pku ...

    poj各种题型详细分类

    - **1050 至最大限度**:通过贪心策略实现最优解。 - **2386 湖泊计数**:利用贪心思想处理图形问题。 ### 四、动态规划类题目 动态规划是一种将复杂问题分解为子问题求解的方法,常用于解决最优化问题。 #### ...

    poj:在poj.org上做的一些算法题

    【标题】"poj.org算法题解集合"是关于在poj.org平台上解决的各种算法问题的集合,这个资源主要是为了帮助编程爱好者和学习者提升算法技能。poj.org是一个著名的在线编程竞赛平台,它提供了丰富的算法题目供用户实践...

    poj推荐50题

    - **1141**、**1050** 和 **1080** 这三道题目则可以帮助进一步巩固动态规划的基础知识。 - **1221** 和 **1260** 两题对于提高动态规划的熟练度有很好的作用。 - **2411** 是一道稍微困难一些的题目,适合那些想要...

    poj_dp分类

    1050 (ac,άӶκͣʶӶκO(n)Ľⷠ!) **题目描述**:这是一道关于数组操作的题目,要求时间复杂度为O(n)。 **解题思路**:利用前缀和或差分数组等技巧减少时间复杂度。 #### 4. 1125 (ac,floyedı׼д֤Լѧϰˮú...

    1050题目十.cpp

    北大POJ第1042题代码(C++)

Global site tag (gtag.js) - Google Analytics