hdu 1081 To The Max
来源:互联网 发布:淘宝主图的卖点词 编辑:程序博客网 时间:2024/04/29 19:34
http://acm.hdu.edu.cn/showproblem.php?pid=1081
这道题目是一道比较经典的动态规划问题,做了这道题目才知道原来一切都是万变不离其宗是啥子意思!这是一道求二维矩阵中最大子矩阵和的问题,和一维求最大字段和有一
定的联系!以前看过这道题,但是没有想出来怎么做,今天刷题刷到这里,又看了看别人的解析,才马马虎虎做出来!
求解过程中,固定行,然后将任意两行之间的所有列值加起来,然后求这个序列中最大子序列和,就是所求的最大子矩阵和
#include <cstdio>
#include <cstring>
#include <cstdlib>
#include <iostream>
#include <algorithm>
using namespace std;
const int maxn=105;
int n;
int dp[maxn][maxn];
int b[maxn];
//一维的求最大字段和问题
int maxsub(int b[],int n)
{
int sum=0,max=0;
for(int i=0;i<n;i++)
{
if(sum>0) sum+=b[i];
else sum=b[i];
if(sum>max) max=sum;
}
return max;
}
int main()
{
while(scanf("%d",&n)!=EOF)
{
int max=0;
for(int i=0;i<n;i++)
for(int j=0;j<n;j++)
scanf("%d",&dp[i][j]);
//从一维的基础上延伸出来
//将两行之间的所有列值加起来,然后求这个序列中最大字段和
for(int i=0;i<n;i++)
{
memset(b,0,sizeof(b));
for(int j=i;j<n;j++)
{
for(int k=0;k<n;k++)
b[k]+=dp[j][k];
int ans=maxsub(b,n);
if(ans>max) max=ans;
}
}
printf("%d\n",max);
}
return 0;
}
- HDU 1081 To the Max
- HDU 1081 To The Max
- HDU 1081 To The Max
- hdu 1081 To The Max
- hdu 1081 to the max
- hdu 1081 To The Max
- hdu 1081 To The Max
- hdu 1081 To The Max
- hdu 1081 To The Max
- HDU 1081 To The Max
- hdu 1081 To The Max
- hdu 1081 To The Max
- hdu 1081 To The Max
- HDU 1081 To The Max
- hdu 1081 To The Max
- HDU 1081 To The Max
- hdu 1081 To The Max
- HDU 1081 To The Max
- 缺少公钥问题的解决方法(gpg: 无法检查签名:找不到公钥)
- 《30天精通iPhone手机编程》-Day12-考反应扑克游戏
- 递归学习_组合_全组合排列
- M8/M16多机通讯例子 如果干扰大就用485吧
- ASP.NET MVC 3: New @model keyword in Razor
- hdu 1081 To The Max
- 牵手百度 分享求职过程中的经验
- HDU 1277 HDU 2222 AC自动机模版题
- 也发一个TWI多机通讯的简单例子.并经过抗干扰测试 IIC I2C
- strcpy()的简洁实现
- Ubuntu下mysql中文乱码的解决
- ORACLE不能访问
- AC自动机理论与实现
- Oracle PL/SQL 学习笔记(二)