HDU ACM 1081 To The Max->最大子矩阵
分析:利用求最大子段和的思想进行求解。
1、首先累加s[i][j]。表示第j列中i从第1行加到第i行的和。
2、对每一列的i1到i2行的和进行计算(0<i1<i2<=n),得出t[k],k表示列值。
3、对t[k]求最大字段和。
4、对全部t[k]求出的最大字段和求最大值,就可以得到最大子矩阵的和。
5、注意:对maxres=0;maxres|=1<<31;的解释。二进制最高位(符号位)置1,其它全部位置0,该数能够变为最小负数,前提为有符号数。
#include<iostream>
using namespace std; int GetMaxNum(int a[],int n) //求最大字段和
{
int i,sum=0,maxsum=0; maxsum|=1<<31;
for(i=1;i<=n;i++)
{
sum+=a[i];
if(sum<a[i])
sum=a[i];
if(maxsum<sum)
maxsum=sum;
}
return maxsum;
} int main()
{
int n,i,j,k,a;
int s[102][102],t[102];
int res,maxres; while(cin>>n)
{
for(i=0;i<=n;i++) //初始化。方便计算
s[i][0]=s[0][i]=0; for(i=1;i<=n;i++)
for(j=1;j<=n;j++)
{
cin>>a;
s[i][j]=s[i-1][j]+a; //读入时就处理,累加每一列的和,s[i][j]表示第j列中i从第1行加到第i行的和
} maxres=0;
maxres|=1<<31; //maxres二进制最高位(符号位)置1变为负数,变为最小负数
for(i=0;i<n;i++)
for(j=i+1;j<=n;j++)
{
for(k=1;k<=n;k++)
t[k]=s[j][k]-s[i][k]; //t[k]表示第k列中第i行到第j行的和
res=GetMaxNum(t,n);
if(maxres<res)
maxres=res;
}
cout<<maxres<<endl;
}
return 0;
}
HDU ACM 1081 To The Max->最大子矩阵的更多相关文章
- hdu 1081 To The Max(dp+化二维为一维)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1081 To The Max Time Limit: 2000/1000 MS (Java/Others ...
- hdu acm 1028 数字拆分Ignatius and the Princess III
Ignatius and the Princess III Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K ...
- ACM HDU 1081 To The Max
To The Max Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) To ...
- dp - 最大子矩阵和 - HDU 1081 To The Max
To The Max Problem's Link: http://acm.hdu.edu.cn/showproblem.php?pid=1081 Mean: 求N*N数字矩阵的最大子矩阵和. ana ...
- HDU 1081 To The Max【dp,思维】
HDU 1081 题意:给定二维矩阵,求数组的子矩阵的元素和最大是多少. 题解:这个相当于求最大连续子序列和的加强版,把一维变成了二维. 先看看一维怎么办的: int getsum() { ; int ...
- Hdu 1081 To The Max
To The Max Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total ...
- URAL 1146 Maximum Sum & HDU 1081 To The Max (DP)
点我看题目 题意 : 给你一个n*n的矩阵,让你找一个子矩阵要求和最大. 思路 : 这个题都看了好多天了,一直不会做,今天娅楠美女给讲了,要转化成一维的,也就是说每一列存的是前几列的和,也就是说 0 ...
- HDU 1081 To The Max(动态规划)
题目链接 Problem Description Given a two-dimensional array of positive and negative integers, a sub-rect ...
- hdu 1081 To The Max(二维压缩的最大连续序列)(最大矩阵和)
Problem Description Given a two-dimensional array of positive and negative integers, a sub-rectangle ...
随机推荐
- System.IO
I/O 1.文件操作:File (1)void AppendAllText(string path, string contents) (2)bool Exist ...
- Struts2-ActionContext
官方解释: The ActionContext is the context in which an {@link Action} is executed. Each context is basic ...
- java.lang.IllegalStateException: No data type for node: org.hibernate.hql.ast.tree.MethodNode(尼玛,蛋疼的错误)
java.lang.IllegalStateException: No data type for node: org.hibernate.hql.ast.tree.MethodNode \-[M ...
- Hadoop 2.x(YARN)安装配置LZO
今天尝试在Hadoop 2.x(YARN)上安装和配置LZO,遇到了很多坑,网上的资料都是基于Hadoop 1.x的,基本没有对于Hadoop 2.x上应用LZO,我在这边记录整个安装配置过程 1. ...
- 基于visual Studio2013解决C语言竞赛题之0422牛顿迭代法
题目
- Linux驱动编写(块设备驱动代码)
[ 声明:版权所有,欢迎转载,请勿用于商业用途. 联系信箱:feixiaoxing @163.com] 按照ldd的说法,linux的设备驱动包括了char,block,net三种设备.char设备 ...
- C++中的智能指针(auto_ptr)
实际上auto_ptr 仅仅是C++标准库提供的一个类模板,它与传统的new/delete控制内存相比有一定优势.使用它不必每次都手动调用delete去释放内存.当然有利也有弊,也不是全然完美的. 本 ...
- 中科燕园GIS外包---地铁GIS项目
(1)地铁保护及project地质管理 • 地铁保护 地铁交通既有运量大,速度快的特点,又有差别于其它交通方式的在地下执行的空间特殊性,因此地铁的保护显得尤为重要. 首先必须编制完整的 ...
- 交换机Trunk端口配置
本文为转发,简单明了,我喜欢. Trunk端口的配置步骤如下: 一 组网需求: 1.SwitchA与SwitchB用trunk互连,相同VLAN的PC之间可以互访,不同VLAN的PC之间禁止互访: 2 ...
- BZOJ 1009: [HNOI2008]GT考试( dp + 矩阵快速幂 + kmp )
写了一个早上...就因为把长度为m的也算进去了... dp(i, j)表示准考证号前i个字符匹配了不吉利数字前j个的方案数. kmp预处理, 然后对于j进行枚举, 对数字0~9也枚举算出f(i, j) ...