UVa 108: Maximum Sum
这道题用暴力解法+动态规划。分析如下:
对于某个1*m的矩阵,即一个数列,求其maximal sub-rectangle,可以通过求最大长连续字串和来求得(这个用到了动态规划)。
那么对于n*m的矩阵,将每列的各个数字求和,将得到一个1*m的矩阵,用上文所说的方法求得的最大和即为该n*m矩阵的所有行数为n的子矩阵中的最大子矩阵和。
那么这道题,通过枚举所有行数为1、2、3.....N 的矩阵(暴力),分别用上述方法压缩矩阵求最大连续字串和,找出其中最大值,即为所求结果。
我的解题代码如下:
#include <iostream>
#include <cstdio>
#include <cstring>
#include <cmath>
#include <cstdlib>
#include <string>
#include <algorithm>
using namespace std; int table[100][100];
int sum[100];
int N; int max_continuous_sum()
{
int maxs=0,s=0;
for(int i=0; i<N; i++)
{
if(s>=0) s+=sum[i];
else s=sum[i];
maxs = maxs>s ? maxs : s;
}
return maxs;
}
int main()
{
cin >> N;
int maxsum=0;
int tmp;
for(int i=0; i<N; i++)
{
for(int j=0; j<N; j++)
{
cin >> table[i][j];
sum[j]=table[i][j];
}
tmp = max_continuous_sum();
maxsum = maxsum>tmp ? maxsum : tmp;
for(int j=i-1; j>=0; j--)
{
for(int k=0; k<N; k++)
sum[k]+=table[j][k];
tmp = max_continuous_sum();
maxsum = maxsum>tmp ? maxsum : tmp;
}
}
cout << maxsum << endl;
return 0;
}
UVa 108: Maximum Sum的更多相关文章
- UVa 108 - Maximum Sum(最大连续子序列)
		
题目来源:https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&category=3&pa ...
 - UVa 10827 - Maximum sum on a torus
		
题目大意:UVa 108 - Maximum Sum的加强版,求最大子矩阵和,不过矩阵是可以循环的,矩阵到结尾时可以循环到开头.开始听纠结的,想着难道要分情况讨论吗?!就去网上搜,看到可以通过补全进行 ...
 - UVA 10827 Maximum sum on a torus  (LA)
		
算法入门经典训练指南88页练习 ::这道题只要把原矩阵扩大4倍,那么其跟最大子矩阵的题目就很类似,把二维转化成一维,求最大的序列和,不过这个序列的长度不能超过n. 长度不能超过n? 那这道题又跟hdu ...
 - UVA 10827 Maximum sum on a torus 最大矩阵和
		
题目链接:UVA - 10827 题意描述:给出一个n*n矩阵,把第一行和最后一行粘一起,把第一列和最后一列粘一起,形成一个环面,求出这个环面中最大的矩阵和. 算法分析:首先复制n*n这个矩阵,形成由 ...
 - POJ2479 Maximum sum[DP|最大子段和]
		
Maximum sum Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 39599 Accepted: 12370 Des ...
 - ural 1146. Maximum Sum
		
1146. Maximum Sum Time limit: 0.5 secondMemory limit: 64 MB Given a 2-dimensional array of positive ...
 - 最大子矩阵和 URAL 1146 Maximum Sum
		
题目传送门 /* 最大子矩阵和:把二维降到一维,即把列压缩:然后看是否满足最大连续子序列: 好像之前做过,没印象了,看来做过的题目要经常看看:) */ #include <cstdio> ...
 - UVA 12906 Maximum Score 排列组合
		
Maximum Score Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://acm.hust.edu.cn/vjudge/contest/vie ...
 - URAL 1146 Maximum Sum(最大子矩阵的和 DP)
		
Maximum Sum 大意:给你一个n*n的矩阵,求最大的子矩阵的和是多少. 思路:最開始我想的是预处理矩阵,遍历子矩阵的端点,发现复杂度是O(n^4).就不知道该怎么办了.问了一下,是压缩矩阵,转 ...
 
随机推荐
- SGU 132.Another Chocolate Maniac
			
时间限制:0.25s 空间限制:4M 题目: Bob非常喜欢巧克力,吃再多也觉得不够.当他的父母告诉他将要买很多矩形巧克力片为他庆祝生日时,他的喜悦是能被理解的.巧克力都是 2x1 或 1x2 的矩形 ...
 - linux svn启动和关闭(转)
			
1,启动SVN sudo svnserve -d -r /home/data/svn/ 其中 -d 表示守护进程, -r 表示在后台执行 /home/data/svn/ 为svn的安装目录 2,关闭 ...
 - An erroroccurred while filtering resources
			
maven报错: maven An error occurred while filtering resources Maven -> Update Project... resolved th ...
 - 最新发布C#.NET快速开发框架企业版V4.0 (适合开发ERP、进销存系统)
			
C/S系统开发框架-企业版 V4.0 (Enterprise Edition) http://www.csframework.com/cs-framework-4.0.htm 视频下载: 百度网盘: ...
 - 学会爱上iOS自动布局(Auto Layout) - 剑尖
			
本文翻译自Yari Dareglia的LEARN TO LOVE AUTO LAYOUT文章先生们,女士们,让我们以正确的心态开始本教程吧:自动布局就是简单!我花了一段时间来掌握自动布局是如何工作的, ...
 - JS:window.onload的使用介绍
			
作者: 字体:[增加 减小] 类型:转载 时间:2013-11-13我要评论 window.onload在某些情况下还是比较实用的,比如加载时执行哪些脚本等等,下面有几个不错的示例,需要的朋友可以参考 ...
 - loadView与viewDidLoad不同   &&  loadView学习总结
			
loadView学习总结 UIViewController类或其子类会在初始化时创建一个UIView对象,会作为控制器的默认视图显示出来,可以通过self.view寻址访问.但没有调用loadView ...
 - 关于C#的委托
			
作者 陈嘉栋(慕容小匹夫) 阅读目录 0x00 前言 0x01 从观察者模式说起 0x02 向Unity3D中的SendMessage和BroadcastMessage说拜拜 0x03 认识回调函数 ...
 - linux系统下root用户和普通用户的时区不一致
			
1. 发现这个问题是在root下执行 date -R 和 普通用户下执行 date -R,发现时区不一致 2. 在一些linux机器下,发现是一致的 3. 什么原因呢?找了半天,最后发现 时区一致的机 ...
 - HYPER-V2008里安装WINDOWS 2012,以及监控宝
			
呵呵,这两者有关系么?没关系.哈哈. 为了方便就放一起了. 至少,2008里的HYPERV能安装2012,倒是给我很多欣慰.