最大字段和问题
来源:互联网 发布:简单编程代码 编辑:程序博客网 时间:2024/05/17 23:43
一、最大子段和
题目描述:
N个整数组成的序列a[1],a[2],a[3],…,a[n],求该序列如a[i]+a[i+1]+…+a[j]的连续子段和的最大值。当所给的整数均为负数时和为0。
例如:-2,11,-4,13,-5,-2,和最大的子段为:11,-4,13。和为20。
思路:
1.简单枚举,时间复杂度为O(n^3),优化一下可以到O(n^2)。
2.分治,复杂度为O(nlogn)。
3.dp,复杂度O(n)。
- dp[j]表示包括a[j]的最大字段和 a[i]+a[i+1]+…+a[j],则dp[j]=a[j]+max(0, dp[j-1])。
- 滚动数字,优化空间复杂度。
// 51node 1049#include <cstdio>typedef long long LL;int main(int argc, char const *argv[]){ int n; scanf("%d", &n); LL t, tmp; LL ans = 0; for(int i = 0; i < n; i++) { scanf("%lld", &t); if(i > 0 && tmp > 0) t += tmp; if(ans < t) ans = t; tmp = t; } printf("%lld\n", ans); return 0;}
二、最大子阵问题
问题描述
给定一个n*m的矩阵A,求A中的一个非空子矩阵,使这个子矩阵中的元素和最大。
其中,A的子矩阵指在A中行和列均连续的一块。
输入格式
输入的第一行包含两个整数n, m,分别表示矩阵A的行数和列数。 接下来n行,每行m个整数,表示矩阵A。
输出格式
输出一行,包含一个整数,表示A中最大的子矩阵中的元素和。
样例输入
3 3
-1 -4 3
3 4 -1
-5 -2 8
样例输出
10
思路:
将最大子阵问题转化为最大子段和问题。
求出所有连续行情况的合并行;
求出每个合并行最大子段和找最大值。
时间复杂度O(n^3).
//PREV-26 #include <stdio.h>#include <string.h>typedef long long LL;const int MAXN = 510;int n, m;LL sum[MAXN][MAXN];LL tmp[MAXN];int main(int argc, char const *argv[]){ scanf("%d%d", &n, &m); memset(sum, 0, sizeof(sum)); for(int i = 1; i <= n; i++) { for(int j = 1; j <= m; j++) scanf("%I64d", &sum[i][j]); for(int j = 1; j <= m; j++) sum[i][j] += sum[i-1][j]; } LL ans = -5000; for(int i = 1; i <= n; i++) for(int j = i; j <= n; j++) { for(int k = 1; k <= m; k++) tmp[k] = sum[j][k] - sum[i-1][k]; LL ta = -5000; LL t = 0; for(int k = 1; k <= m; k++) { if(t < 0) t = 0; t += tmp[k]; if(ta < t) ta = t; } if(ans < ta) ans = ta; } printf("%I64d\n", ans); return 0;}
0 0
- 最大字段和问题
- 最大字段和问题
- 最大字段和问题
- 最大字段和问题
- 最大字段和问题
- 最大字段和问题
- 最大字段和问题
- dp 最大字段和 问题
- 背包问题I--最大字段和
- 动态规划:最大字段和问题
- 动态规划之最大字段和问题
- 最大字段求和问题
- 数组问题之一维最大字段和问题<Java实现>
- 最大字段和问题 难点分析和C++实现9
- hdu1231 最大字段和
- 求最大字段和
- 最大字段和
- 最大子字段和
- VB作业1
- oracle数据库密码过期怎么办
- 点击EditText外的组件隐藏软键盘
- update the gedit for php programming(searched not try yet)
- Android 自定义View高级特效,神奇的贝塞尔曲线
- 最大字段和问题
- hql多条件查询的拼接
- kaptcha验证码的简单使用及配置
- 100M网线为什么要用8根线?
- Oracle 索引 详解
- 作业2
- 如何采集企业信息公示系统
- IT忍者神龟之Beetl 模版引擎Hello版本
- 雅思考试经验分享,G类移民不可错过!