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 online judge 1050 最大子矩阵动态规划解决
4. POJ 1050: 这个编号的题目可能是某个特定主题的挑战,比如字符串匹配、组合数学或数值计算。解题者需要灵活应用已学知识,同时可能需要研究特定领域的算法。 5. POJ 1080 - 1088: 随着编号接近尾声,题目难度...
在POJ题目中,我们可以看到一些经典的算法题目,例如,动态规划的题目,例如,1037 A decorative fence、1050 To the Max、1088 滑雪等。这类题目需要程序员使用动态规划算法来解决问题。 此外,POJ题目还包括一些...
在本次华中科技大学春季学期的算法实践中,学生完成并通过了多项算法题目,其中包括POJ1050、POJ1042、POJ1201以及POJ1328。每道题目的解题报告都详细地记录了问题描述、题目分析、算法设计、性能分析以及运行测试等...
第 12 题:poj1050 To the Max 这道题目要求我们找到一个给定矩阵中的最大子矩阵和。这道题目可以使用动态规划来解决。我们可以使用 Kadane's algorithm 来解决这个问题,该算法可以在 O(n^3) 的时间复杂度内解决...
很多的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,...
2. 1050 To the Max:求解最大值问题,可能需要构建一个二维数组来存储子问题的解。 3. 1125 Stockbroker Grapevine:涉及股票交易策略,需要考虑时间序列上的决策。 4. 1141 Brackets Sequence:与括号匹配相关,...
- **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源码"所涉及的知识点主要集中在程序设计与算法领域,特别是针对编程竞赛中的问题解决。POJ(Problem Online Judge)是一个在线编程评测系统,它提供了各种算法题目供参赛者练习和提交代码。在这个...
* 1050 To the Max:本题目需要使用动态规划来计算最大subset sum。 * 1088 滑雪:本题目使用动态规划来计算滑雪的最短距离。 * 1125 Stockbroker Grapevine:本题目使用动态规划来计算股票交易的最大收益。 * 1141 ...
标题中的"POJ.rar_pku ac_pku.1050"暗示了这是一个与北京大学(Peking University, 简称PKU)编程竞赛相关的压缩文件,其中包含了作者通过验证(Passed All Cases, 简称AC)的代码,具体是针对PKU题目编号1050的问题。...
- 1037, 1050, 1088, 1125, 1141, 1159, 1160, 1163, 1458, 1579, 1887, 1953, 2386 **关键知识点:** - **贪心算法**:在每一步都选择局部最优解。 - **回溯算法**:采用试探性的策略来搜索所有可能的解决方案。 -...
poj经典动态规划题目解题报告,包括经典的动态规划题目20多道,可以作为学习动态规划系统的资料,包括题目: Pku acm 1179 Polygon Pku acm 1125 Stockbroker Grapevine Pku acm 1160 post office Pku ...
- **1050 至最大限度**:通过贪心策略实现最优解。 - **2386 湖泊计数**:利用贪心思想处理图形问题。 ### 四、动态规划类题目 动态规划是一种将复杂问题分解为子问题求解的方法,常用于解决最优化问题。 #### ...
【标题】"poj.org算法题解集合"是关于在poj.org平台上解决的各种算法问题的集合,这个资源主要是为了帮助编程爱好者和学习者提升算法技能。poj.org是一个著名的在线编程竞赛平台,它提供了丰富的算法题目供用户实践...
* 1050 To the Max * 1088 滑雪 * 1125 Stockbroker Grapevine * 1141 Brackets Sequence * 1159 Palindrome * 1160 Post Office * 1163 The Triangle * 1458 Common Subsequence * 1579 Function Run Fun * 1887 ...
- **1141**、**1050** 和 **1080** 这三道题目则可以帮助进一步巩固动态规划的基础知识。 - **1221** 和 **1260** 两题对于提高动态规划的熟练度有很好的作用。 - **2411** 是一道稍微困难一些的题目,适合那些想要...
1050 (ac,άӶκͣʶӶκO(n)Ľⷠ!) **题目描述**:这是一道关于数组操作的题目,要求时间复杂度为O(n)。 **解题思路**:利用前缀和或差分数组等技巧减少时间复杂度。 #### 4. 1125 (ac,floyedıд֤Լѧϰˮú...
北大POJ第1042题代码(C++)