【动态规划】HDU1081To The Max
来源:互联网 发布:知乎不能修改不了答案 编辑:程序博客网 时间:2024/06/05 07:26
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1081
/* 将维度合成一列*/#include<bits/stdc++.h>using namespace std;const int N=1050;int dp[N][N]; // dp[i][j]表示从dp[1][j]~dp[i][j]的和int a[N][N];int t[N];int ss,ee;int MaxSum(int *a,int n){ int s; int Max=0,sum=0; for(int i=1;i<=n;i++){ if(sum>0){ sum+=a[i]; }else{ s=i; sum=a[i]; } if(sum>Max){ Max=sum; ss=s; ee=i; } } return Max;}int main(){ int n; while(cin>>n){ memset(dp,0,sizeof(dp)); memset(t,0,sizeof(t)); for(int i=1;i<=n;i++){ for(int j=1;j<=n;j++){ cin>>a[i][j]; dp[i][j]=dp[i-1][j]+a[i][j]; } } int Max=0; int x,y,S,T; // 开始行,宽度,开始结束位置 for(int i=1;i<=n;i++){ // 枚举行的起点 for(int j=1;j<=n-i+1;j++){ // 枚举宽度 for(int k=1;k<=n;k++){ // 枚举列,将二维整合成一维 t[k]=(dp[i+j-1][k]-dp[i-1][k]); } int tmp=MaxSum(t,n); if(tmp>Max){ Max=tmp; x=i; y=j; S=ss; T=ee; } } } cout<<Max<<endl; // for(int i=x;i<=x+y-1;i++){ // for(int j=S;j<=T;j++){ // cout<<a[i][j]<<' '; // } // cout<<endl; // } } return 0;}
阅读全文
0 0
- hdu1081To The Max【动态规划】
- 【动态规划】HDU1081To The Max
- hdu1081To The Max(动态规划--初步)
- hdu1081To The Max(dp)
- hdu1081To The Max
- To The Max(动态规划)
- POJ 1050-To the Max (动态规划)
- hdu 1081 To The Max (动态规划)
- To the Max(动态规划DP)
- POJ 1050 To the Max -- 动态规划
- To the Max-动态规划 树状数组
- HDU 1081 To The Max 动态规划
- poj1050 To the Max (动态规划)
- 三维动态规划 To The Max
- POJ1050 To the Max 动态规划
- zoj1074 TO THE MAX(动态规划)
- 【动态规划】[POJ 1050]To the Max
- POJ1050 To the Max 简单动态规划
- Glide4.0源码全解析(一),GlideAPP和.with()方法背后的故事
- oracle中的schema是什么?为什么要指定这个?
- hdoj 1533 && poj 2195 Going Home
- 第14期《成长之路》2017年9月刊
- Python logging 模块
- 【动态规划】HDU1081To The Max
- 9月6日笔记(mysql命令操作和frameset标签)
- Android资源文件strings实现特殊字符转义
- maven3.3.9报错
- java中的基本数据类型存放位置
- 【日萌社原创】C / C++ 笔记
- eclipse常用的快捷键
- android studio 升级到2.3 不支持apt
- 求链式表的表长