`
SaraWon
  • 浏览: 41802 次
  • 性别: 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部分题目答案(一些基础题目)

    很多的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动态规划题目列表

    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(马尔科夫矩阵,求...

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

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

    poj3045源码

    poj3045的源码,很久以前写的,语言是C++

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

    poj 算法题在poj.org上做的一些算法题poj.org 账号:xxfeixiang题目地址:例如,第1001题的地址为:

    POJ.rar_pku ac_pku.1050

    PKU 1000-1050我ac的代码!绝对保证质量!

    POJ 1000 1003 1004 1005 1014 1017 1050 1080 1088

    PKU onlinejudge 通过源码 C/C++

    acm poj 源代码

    1001 1002 1003 1004 1005 1006 1007 1008 1011 1012 1013 1014 1015 1017 1018 1019 1028 1032 1042 1046 1050 1061 1065 1066 1067 1077 1080 1083 1088 1094 1111 1125 1135 1141 1157 1160 1161 1163 1166 1170 ...

    poj pku 解题报告

    1000 1001 1002 1003 1004 1005 1006 1007 1008 1009 1011 1012 1013 1014 1015 1017 1018 1019 1028 1032 1035 1040 1042 1045 1046 1047 1050 1056 1061 1062 1063 1065 1067 1068 1080 1083 1088 1089 1091 1094 ...

    poj135道题的代码

    1000 1001 1002 1003 1004 1005 1006 1007 1008 1009 1011 1012 1013 1014 1018 1019 1028 1032 1040 1042 1045 1046 1047 1050 1056 1061 1062 1063 1065 1067 1068 1083 1088 1102 1113 1118 1126 1141 1142 1157 ...

    1050题目十.cpp

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

    PKU源码。。。。。

    PKU,POJ共301题源代码。1001 1002 1003 1004 1005 1006 1007 1008 1011 1012 1013 1014 1015 1017 1018 1019 1028 1032 1042 1046 1050 1061 1065

    全国软件设计大赛测试题目.doc

    如输入数据为 3 11011000 输出为 IIIBIFFIBFBBBFF 第4题(http://poj.org/problem?id=1050) To the Max Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 25250 Accepted: 13051 Description Given a ...

Global site tag (gtag.js) - Google Analytics