设为首页 加入收藏

TOP

UVa 108: Maximum Sum
2014-11-23 21:42:26 来源: 作者: 【 】 浏览:8
Tags:UVa 108: Maximum Sum

这道题用暴力解法+动态规划。分析如下:

对于某个1*m的矩阵,即一个数列,求其maximal sub-rectangle,可以通过求最大长连续字串和来求得(这个用到了动态规划)。

那么对于n*m的矩阵,将每列的各个数字求和,将得到一个1*m的矩阵,用上文所说的方法求得的最大和即为该n*m矩阵的所有行数为n的子矩阵中的最大子矩阵和。

那么这道题,通过枚举所有行数为1、2、3.....N 的矩阵(暴力),分别用上述方法压缩矩阵求最大连续字串和,找出其中最大值,即为所求结果。

我的解题代码如下:

#include 
#include 
#include 
#include 
#include 
#include 
#include 
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=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> 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; ktmp   maxsum : tmp;
		}
	}
	cout << maxsum << endl;
	return 0;
}

】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇hdu 4630 No Pain No Game 下一篇hud 1811 Rank of Tetris(拓扑排..

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容:

·【C语言】动态内存管 (2025-12-27 06:23:20)
·C语言中的内存管理 - (2025-12-27 06:23:16)
·C语言指南:C语言内 (2025-12-27 06:23:14)
·Redis on AWS:Elast (2025-12-27 04:19:30)
·在 Spring Boot 项目 (2025-12-27 04:19:27)