DP::Poj1050 To the max

acm-poj1050解题报告 题目地址:http://poj.org/problem?id=1050 题目大意:简单易懂,求一个最大为100*100矩阵中的子矩阵中元素之和的最大值 解题思路:说实话这道题算是DP,本人现在正在补,对DP还是不太熟悉,甚至还在网上参考了一些算法过程以及思路才写出的代码,最后终于AC了(笑)                    首先,解这道题要有求最大子段和的基础,如给你一个数组a,求 阅读详情
 

题目:给定一个N*N方阵,元素为整数,求连续子阵全部元素和的最大值。

 

一开始我想直接在二维上解决问题,在构造递归方程的时候令max[k](k=i+j)为大小i*j的子阵的子阵和的最大值,然而下面的例子说明了没有最优子结构

0 -2 -7 0
9 2 -6 2
-4 1 -4 1
-1 9 0 -2

这使得二维的直接DP成为泡影,给我的感觉是题目无法用DP。然而转念一想,既然高维的做不了,低维的呢?柳暗花明又一村,顿时视野开阔!这种降次的思想来源于数学,一般地,我们必须解决两个问题:(1)低维的怎么做?(2)如何把高维的转化为低维的?下面就这两个问题且行且分析。

二维数组的低维就是一维数组了,那么题目不就是:给定一个一维数组,求连续子序列和的最大值。这个问题就容易了,状态很自然地为m[i]表示前面i个数的子序列中以a[i]元素结尾的连续子序列和的最大值,则状态转移方程为m[i]=max{a[i],m[i-1]+a[i]},由此看出只需要一个for就行,效率为 O(N)!

如何转化,这往往是解决问题的关键之处,有时候尽管简单,但想不到也是徒然,更何况这种转化是否存在本身就是个问题。对这上面的矩阵发呆,想着按照“Sample Input”中所用的性质把矩阵拉长,可这又保证不了连续性,解决的方法是隔开间距N-k,其中k为子连续序列的长度——换个角度思考,既然这样,为何不把各子连续序列对应的元素相加看做一个元素呢?!问题就这样解决了。

下面代码的时间代价为 O(n^3)

#include "stdafx.h"
#include <iostream>
using namespace std;

int ArraySe(int n,int a[])
{
	int max=0;
	for(int b=0, i=0;i<n;i++){
		b>0?(b+=a[i]):b=a[i];
		if(b>max) max=b;
	}
	return max;
}

int _tmain(int argc, _TCHAR* argv[])
{
	int n;
	cin>>n;
	int a[100][100];
	for(int i=0;i<n;i++)
		for(int j=0;j<n;j++)
			cin>>a[i][j];
	int b[100]={0};
	int max=0,temp;
	for(int i=0;i<n;i++){
		for(int l=0;l<n;l++)
			b[l]=0;
		for(int j=i;j<n;j++){
			for(int k=0;k<n;k++)
				b[k]+=a[j][k];
			temp=ArraySe(n,b);
			if(temp>max)max=temp;
		}
	}

	cout<<max<<endl;
	return 0;
}


动态规划入门(二)DP 基本思想 具体实现 经典题目 POJ1088 POJ1163 POJ1050 动态规划入门(二)DP 基本思想 具体实现 经典题目 POJ1088 POJ1163 POJ1050 (一) POJ1088,动态规划的入门级题目。嘿嘿,连题目描述都是难得一见的中文。 题目分析: 求最长的滑雪路径,关键是确定起点,即从哪开始滑。 不妨设以( i, j )为起点, 阅读详情

相关推荐

AI工作流革命:从n8n到Sora2,揭秘自动化视频创作的底层逻辑

本文深入探讨了AI工作流在自动化视频创作中的应用,重点介绍了n8n、Coze和Sora2的组合如何实现从链接输入到视频输出的全流程自动化。通过三层架构解析、关键技术模块优化及成本控制策略,这套方案显著提升了视频生产效率,适用于电商、热点追踪等多种场景。

gg901的博客 1083

POJ 1050/ ZOJ 1074:To the Max - DP求子矩阵和

题意:即最大子段和问题在二维空间上的推广思路:一维的情况:设有数组a0,a1…an,找除其中连续的子段,使它们的和达到最大。假如对于子段:9 2 -16 2dp[i]表示:以ai结尾的子段中的最大子段和。在已知dp[i]的情况下,求dp[i+1]的方法是:如果dp[i] > 0,dp[i + 1] = dp[i] + ai(继续在前一个子段上加上ai);否则dp[i + 1] = ai(不加上前面

Booky的专栏 783

华为防火墙USG6000系列多ISP上网(通过WEB界面设置)

华为防火墙多ISP上网,内网分区上网。内网多网段不同上网方式。

daxihe880的博客 1万+

DP:zoj 1074 || poj 1050 To the Max

[转]http://blog.youkuaiyun.com/zxy_snow/article/details/5998184 #include &lt;stdio.h&gt;#include &lt;stdlib.h&gt;#include &lt;iostream&gt;#include &lt;string.h&gt;#define N 101using namespace std;int Maxsum...

caoruntaogmail的博客 127

MTK-AWB 小结 (二)

调试总结:可以将offset 对应的ratio加大,保留更多的喜好色(偏色),影响WF statistic gain,从而影响最终的awb gain。这一部分前期CCT校准的时候就会算出一组默认值,当然这个offset offse 值用于优化T,S,wf 光下的偏色喜好度. offset。后面遇到 A H Shad 光收白或者偏色,还可以优化 A 的offset ,H offset,shad offset.new offset 计算过程(Day locus offset 和M/G offset )

qq_46056347的博客 1167

Matlab双目相机标定

1 概述 现在有许多双目相机在出厂时就已经标定好了,用户拿到手后可以直接使用,例如Intel Realsense系列。但是有些相机出厂的时候并没有完成标定工作,因而这个时候就需要我们自己来标定。由于笔者曾改装过一个双目相机,最远可以测至50m,因此有一定的心得体会想给大家分享一下。本文主要介绍双目相机标定的整个过程,以及导出标定数据的方法。 相机标定主要分为手动标定和自动标定,手动标定比较繁琐,这里主要介绍基于matlab工具箱的自动标定方式来对双目相机进行标定。具体的相关标定细节也可以参照这篇博客:m

weixin_46133643的博客 2万+

DP第二题:poj1050------To the Max

To the Max Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 52190 Accepted: 27587 Description Given a two-dimensional array of positive and negative integers, a sub-rectangle...

qq_36386435的博客 170

Cadence仿真实战:从零构建高精度带隙基准电压源

本文是一份详细的Cadence仿真实战指南,指导读者从零开始构建高精度带隙基准电压源。文章首先解释了带隙基准电压源稳定输出电压的原理,然后逐步演示了在Cadence Virtuoso环境中如何搭建测试电路、测量关键温度系数、计算并搭建核心电路,并通过参数扫描和迭代调优来驯服温度漂移,最终实现低漂移的基准电压输出。

weixin_29207533的博客 242

poj 1050-小白算法练习 to the max 动态规划

To the Max Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 49226   Accepted: 26074 Description Given a two-dimensional array of positive and negative integer

水野与小太郎的博客 1809

XCP实战系列介绍07-使用ASAP2 Editor生成A2l文件详解

介绍通过ASAP2 Editor工具生成A2l文件步骤详解

initiallizer的博客 7297

大数据领域数据产品的团队激励与绩效管理

在大数据领域,数据产品的成功离不开高效协作的团队。团队激励与绩效管理的目的在于激发团队成员的工作热情和创造力,提高工作效率和质量,确保数据产品能够按时、高质量地交付。本文章的范围涵盖了大数据领域数据产品团队激励与绩效管理的各个方面,包括激励机制的设计、绩效评估的方法、团队沟通与协作等。本文将按照以下结构进行阐述:首先介绍核心概念与联系,明确相关概念的定义和相互关系;接着讲解核心算法原理和具体操作步骤,为团队激励与绩效管理提供理论支持和实践指导;然后分析数学模型和公式,帮助读者深入理解绩效评估的原理;

Java大师兄的博客 1018

POJ 1050 To the Max(动态规划、最大子矩阵和)

//poj 1050 - dp //2014-6-11 #include #include #include using namespace std; const int MAX_N = 111; int n; int a[MAX_N][MAX_N]; //int d[MAX_N][MAX_N][MAX_N]; int inline getMax ( int a, int b, int c

NightWind 882

POJ 1050 To the Max【DP】

做这题前,先弄清楚HDU1003这题。 然后再把二维压缩为一维就可以了。 1,12,123,1234,2,23,234,3,34,4 按上面几种情况压缩,求出最大的即可。

AC_Dreameng 1049

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

POJ 1050 To the Max

POJ 1050 To the Max 1. 根本没有思路,看到如下的解释,才明白怎么做: 这个题目很经典的说,O(N^3)的DP。 首先偶们考察这样的题目,简化版: 已知一列数,求任意连续若干个数和的最大值。 SAMPLE: 3 2 -6 2 ...

dayong9372的博客 84

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

POJ1050 To the Max

题目链接:contest-hunter.org:83/contest/0x08「基本算法」练习/POJ1050 To the Max 我就是个菜鸡。 啥都不会 呜呜呜 这个题目可以说是一个dp了。也可以说是思维吧。有点难想。 我们可以用三层循环。第一层循环是枚举区间的左列。第二层循环是枚举区间的右列。 第三层循环则是枚举每一行。 这样的话就可以通过三层循环来表示出一个区间,不需要通过四层循环了。看...

年轻过成了秃顶 219

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

POJ 1050 To the Max(DP,最大子矩阵和)

POJ 1050 题意:给一个矩阵,求出元素和最大的子矩阵。 思路: 之前曾写过最大子串和的一篇文章,这次由一维上升到了二维。 我们可以通过累加每行相同列或每列相同行的值,将其储存在一个数组中,便可以将二维降至一维。 时间复杂度为O(n^3)。 参考: 累加每一行相同列的做法(java实现) 累加每一列相同行的做法(C++实现) code: /* *Author : F

a novice 947

poj1050-To The Max DP求解

文章目录问题描述最优子序列问题暴力枚举动态规划poj1050AC代码 问题描述 poj1050 to the max 问题可简要描述如下: 给定一个整数n(n<100),之后输入n*n个数字组成一个方阵,在方阵内部可以选出一些小矩阵,求在方阵内部可以选出的小矩阵所包含数字的和的最大值 这个问题是一个典型的动态规划的问题,而且,和最优子序列问题实质上是一样的。 最优子序列问题 最优子序列问题是...

weixin_45144044的博客 349

ACM学习-POJ-1050-To the Max

菜鸟学习ACM,纪录自己成长过程中的点滴。 学习的路上,与君共勉。 ACM学习-POJ-1050-To the Max To the Max Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 37462   Accepte

Colin丶 5242

poj 1050 To the Max(线性dp)

题目链接:http://poj.org/problem?id=1050 思路分析: 该题目为经典的最大子矩阵和问题,属于线性dp问题;最大子矩阵为最大连续子段和的推广情况,最大连续子段和为一维问题,而最大子矩阵为二维问题, 可以考虑将二维问题转换为一维问题,即变为最大子段和问题即可求解; 先考虑暴力解法,暴力解法需要枚举子矩阵的左上角元素的坐标与子矩阵的右下角坐标即可枚举所有的子...

aqjh9999的博客 153

HDU - 1003 - Max Sum && POJ - 1050 - To the Max (经典DP问题)

题目传送:HDU - 1003 思路:最大子序列和 dp[i]= a[i]   (dp[i-1] dp[i]= dp[i-1]+a[i]   (dp[i-1]>=0) AC代码: #include #include #include #include #include #include #include #include #include #includ

Never say never 833

POJ-1050 To the MAX题解

题目大意: 给定一个矩阵,要求矩阵中最大子矩阵和。N<=100 如输入: 4 0 -2 -7 0 9 2 -6 2 -4 1 -4 1 -1 8 0 -2 输出: 15 思路: 法一:这题是到数据范围不是很严谨的一道题,虽说N<=100,但是N^4仍然可以过。 复习一下二维前缀和的知识 dp[i][j]=dp[i-1][j]+dp[i][j-1]-dp[i-1][j-1]; 若要求左上角为(i,j)右下角为(x,y)的矩形和则为:dp[x][y]-dp[x][j-1]-dp[i-1][y]+dp

qq_41201328的博客 402

POJ1050 HDOJ1081 TO THE MAX

求矩阵的最大子矩阵DP典型例题:Pku 1050 To The Max  http://acm.pku.edu.cn/JudgeOnline/problem?id=1050Hdu 1081 To The Max http://acm.hdu.edu.cn/showproblem.php?pid=1081 题目的意思很简单,在一个矩阵里面找它的子矩阵,使得子矩阵数值之和到达最大。

互联网产品管理、交互、设计、开发、用户体验专栏 2031

To the Max POJ1050 二维dp

http://poj.org/problem?id=1050 Description Given a two-dimensional array of positive and negative integers, a sub-rectangle is any contiguous sub-array of size 1*1 or greater located within the whol...

lanshan1111的博客 193

ACM POJ 1050(To The Max) Solution Summary

问题原文: http://acm.pku.edu.cn/JudgeOnline/problem?id=1050自己想了很久没能想出来,主要卡在如何用 DP 求一个二维关系上。后来百度了一下,找到了解法。首先需要一个三维数组,_score[i][j][k]。意思是,从第i行到第j行所有第k列元素的和保存在_score[i][j][k]里面。这个数组做好以后我们把所有纵向的可能都枚举出来了。之

643
上一篇: DP::Poj1015 July Compromise
下一篇: 排序小结1
初四
博客等级 码龄15年 3粉丝 19原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值