`

hdu 1081 To The Max (动态规划)

阅读更多

题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=1081

解题报告:求最大的矩阵和的问题,可以转化为最大连续子序列和的模型,只不过这个是一个二维的问题。如何转化是关键:我们可以把每一项变成前面多项的和,通过相减计算每个子矩阵。在求解的时候竖着求解,这样子问题就转换为1维求解最大连续子序列和的问题。

给一组参考数据:
4
-3 -7 -1 -2
-3 -4 -2 -5
-3 -5 -2 -3
-4  6 -3 -2

参考代码:

#include<cstdio>
#include<cstring>
#include<algorithm>

using namespace std;

#define MAX (100 + 5)

int mp[MAX][MAX],sum[MAX][MAX];
int temp[MAX][MAX];
 
int main()
{
	int n,ans,cnt;
	while(scanf("%d",&n)!=EOF)
	{
		int  mini = -0x7ffffff;
		memset(mp,0,sizeof(mp));
		memset(sum,0,sizeof(sum));
		for(int i=1;i<=n;i++)
			for(int j=1;j<=n;j++)
			{
				scanf("%d",&mp[i][j]);
				if(mp[i][j] > mini)
					mini = mp[i][j];
			}
		if(mini<0)
		{
			printf("%d\n",mini);
			continue;
		}
		for(int i=1;i<=n;i++)
		{
			for(int j=1;j<=n;j++)	
				sum[i][j]=sum[i][j-1]+mp[i][j];
		}
		ans=0;
		for(int i=1;i<=n;i++)
		{
			for(int j=1;j<=n;j++)
			{
				for(int k=0;k<i;k++)
				{ 
					temp[j][k+1]=sum[j][i]-sum[j][k];
				}
			}
			for(int k=1;k<=i;k++)
			{
				cnt=0;
				for(int j=1;j<=n;j++)
				{
					cnt+=temp[j][k];
					if(ans<cnt)	ans=cnt;
					if(cnt<0)	cnt=0;
				}
			}
		}
		printf("%d\n",ans);
	}
	return 0;
}

 

 

分享到:
评论

相关推荐

    DP.rar_DP_hdu_动态规划_动态规划 C++

    描述中提到的“动态规划DP题解”和“POJ HDU部分动态规划DP题解”,说明这个压缩包包含了针对HDU和POJ(Problemset Online Judge)平台上一些动态规划题目的解答。POJ是一个著名的在线编程竞赛平台,其中包含了大量...

    hdu动态规划题目

    关于hdu的动态规划的题目,包括一些水题,还有一些经典的动态规划题目。

    HDU DP动态规划

    【标题】"HDU DP动态规划"涉及到的是在算法领域中的动态规划(Dynamic Programming,简称DP)技术,这是解决复杂问题的一种高效方法,尤其适用于有重叠子问题和最优子结构的问题。动态规划通常用于优化多阶段决策...

    hdu动态规划算法集锦

    根据提供的信息,我们可以总结出以下关于“hdu动态规划算法集锦”的知识点: ### 动态规划基础概念 动态规划是一种解决多阶段决策问题的方法,它通过将原问题分解为互相重叠的子问题,利用子问题的解来构建原问题...

    HDU 动态规划(46道题目

    ### HDU 动态规划精选解析 #### 一、Robberies (抢劫) **问题描述:** 本题涉及抢劫问题,需要求出在一定条件下,能够抢得的最大金额的同时保证最大的逃脱概率。每家银行有一个特定的价值(金额)以及一个逃脱的...

    acm课件动态规划题(杭电)(HDU)

    本资源“acm课件动态规划题(杭电)(HDU)”显然是针对这个领域的训练材料,特别适合于提升ACM竞赛选手在解决动态规划题目上的能力。杭州电子科技大学(Hangzhou Dianzi University, 简称HDU)是知名的在线编程竞赛...

    hdu acm 教案(3)

    动态规划是计算机科学中一种强大的问题解决方法,尤其在处理最优化问题时非常有效。在这个教案中,我们将深入探讨动态规划的基本概念、应用场景以及如何构建解决方案。 动态规划是一种通过将复杂问题分解为相互重叠...

    HDU_ACM培训课件(完整版)

    1. **算法基础**:这部分通常会讲解基础的数据结构,如数组、链表、栈、队列、树、图等,以及基础算法,如排序、搜索、动态规划、贪心算法等。这些是ACM竞赛中常遇到的问题类型,对解题至关重要。 2. **高级算法**...

    hdu.rar_hdu

    这些代码通常包含了对各种算法的应用,例如排序、搜索、图论、动态规划等,对于学习算法和准备编程竞赛的初学者来说是一份宝贵的资源。 压缩包内的文件名“朝花夕拾——hdu”可能表示这是一系列关于HDU题目的代码...

    (HDUACM201403版_05)动态规划

    杭电ACM课件2014版之 (HDUACM201403版_05)动态规划

    ACM HDU题目分类

    DP(Dynamic Programming,动态规划)是一种非常重要的算法思想,在 ACM HDU 题目分类中,DP 问题占据了很大的比例。例如,1003 DP 经典问题,最大连续子段和;1024 经典 DP,最大 M 子段和;1025 经典 DP,最长递增...

    HDU动态规划

    HDU动态规划,此PPT系杭州电子科技大学ACM总教练刘春英老师所有, 特在此分享贡献给广大编程爱好者, 特别是ACMer!

    HDU题目java实现

    9. **动态规划**:这是一种优化策略,通过构建状态转移方程来求解问题,例如背包问题、最长公共子序列、矩阵链乘法等。 10. **回溯法**:在解决组合优化问题和逻辑推理问题时常用,如八皇后问题、数独求解等。 11....

    hdu1250高精度加法

    ### hdu1250高精度加法 #### 背景介绍 在计算机科学与编程竞赛中,处理大整数运算(特别是加法、减法、乘法等)是常见的需求之一。当数字的位数超过了标准数据类型(如`int`、`long`等)所能表示的最大值时,就需要...

    算法设计与分析实验六:使用动态规划算法解决存钱问题(java实现、hdu1114)(csdn)————程序.pdf

    在这个实验中,主要的目标是通过动态规划算法来解决一个实际问题——如何在不打破存钱罐的情况下,找到装满存钱罐所需的最小金额。实验使用Java语言进行实现,并且是针对HDU 1114题目的解决方案。 动态规划是一种...

    hdu 1257 最低拦截系统 lis

    - **动态规划实现**:使用两个循环实现状态转移,外层循环遍历数组,内层循环用于计算当前元素结尾的最长递增子序列长度。 - **输出结果**:输出最长递增子序列的长度。 ### 总结 通过上述分析,我们了解到题目...

    算法分析 递归与分治策略 动态规划 贪心算法 分支限界法 随机化算法等算法

    在IT领域,算法是解决问题的核心工具,而递归与分治策略、动态规划、贪心算法、回溯法、分支限界法以及随机化算法都是其中的重要组成部分。这些算法不仅适用于计算机科学,也在数据结构、优化问题和复杂计算中扮演着...

    动态规划DP结题报告

    动态规划DP题解 POJ HDU 动态规划解题报告

    动态规划详解

    可能是对动态规划深入讲解的一堂课,而 "(HDUACM2010版_04)动态规划.ppt"、"3_ACM动态规划.ppt" 和 "hdu1160.txt" 可能是针对ACM竞赛的动态规划训练资料,特别是"hdu1160.txt"可能是一个具体的背包问题实例。...

    HDU_2010.rar_hdu 2010_hdu 20_hdu acm20

    【标题】"HDU_2010.rar"是一个压缩包文件,其中包含了与"HDU 2010"相关的资源,特别是针对"HDU ACM20"比赛的编程题目。"hdu 2010"和"hdu 20"可能是该比赛的不同简称或分类,而"hdu acm20"可能指的是该赛事的第20届...

Global site tag (gtag.js) - Google Analytics