Problem Descrption

给定K个整数的序列{ N1, N2, ..., NK },其任意连续子序列可表示为{ Ni, Ni+1, ...,
Nj },其中 1 <= i <= j <= K。最大连续子序列是所有连续子序列中元素和最大的一个,
例如给定序列{ -2, 11, -4, 13, -5, -2 },其最大连续子序列为{ 11, -4, 13 },最大和
为20。
在今年的数据结构考卷中,要求编写程序得到最大和,现在增加一个要求,即还需要输出该
子序列的第一个和最后一个元素。

Input

测试输入包含若干测试用例,每个测试用例占2行,第1行给出正整数K( < 10000 ),第2行给出K个整数,中间用空格分隔。当K为0时,输入结束,该用例不被处理。

Output

对每个测试用例,在1行里输出最大和、最大连续子序列的第一个和最后一个元
素,中间用空格分隔。如果最大连续子序列不唯一,则输出序号i和j最小的那个(如输入样例的第2、3组)。若所有K个元素都是负数,则定义其最大和为0,输出整个序列的首尾元素。

Sample Input

6
-2 11 -4 13 -5 -2
10
-10 1 2 3 4 -5 -23 3 7 -21
6
5 -8 3 2 5 0
1
10
3
-1 -5 -2
3
-1 0 -2
0

问题分析:遇到小于0的数就断开,并记录起始位置,判断是否大于原来的最大段的值,大于则更新最大段

AC代码:


#include <iostream>#include <cstring>#include <algorithm>using namespace std;int a[10005];
int main(){int n,MAX,sum;while(cin>>n&&n){for(int i = 0; i<n; i++)scanf("%d",&a[i]);int left,right,flag;MAX = a[0];sum = 0;left = right = a[0];for(i = 0; i<n; i++){if(sum<0)//前一段总和小于0,断开{sum = a[i];flag = a[i];}elsesum+=a[i];if(sum>MAX)//更新最大值{MAX = cnt;left = flag;right = a[i];}}if(MAX<0){printf("0 %d %d\n",a[0],a[n-1]);continue;}printf("%d %d %d\n",MAX,left,right);}return 0;}

HDU1231(DP)相关推荐

  1. 求三角形最大面积(DP)

    求三角形最大面积(DP) 在OJ上奇迹般WA了:WA:70. Why? #include <iostream> #include <string.h> using namesp ...

  2. LeetCode 编辑距离 II(DP)

    1. 题目 给你两个单词 s 和 t,请你计算出将 s 转换成 t 所使用的最少操作数. 你可以对一个单词进行如下两种操作: 删除一个字符 替换一个字符 注意: 不允许插入操作 题目保证有解 示例: ...

  3. LeetCode 1220. 统计元音字母序列的数目(DP)

    文章目录 1. 题目 2. 解题 1. 题目 给你一个整数 n,请你帮忙统计一下我们可以按下述规则形成多少个长度为 n 的字符串: - 字符串中的每个字符都应当是小写元音字母('a', 'e', 'i ...

  4. LeetCode 265. 粉刷房子 II(DP)

    文章目录 1. 题目 2. 解题 1. 题目 假如有一排房子,共 n 个,每个房子可以被粉刷成 k 种颜色中的一种,你需要粉刷所有的房子并且使其相邻的两个房子颜色不能相同. 当然,因为市场上不同颜色油 ...

  5. LeetCode 256. 粉刷房子(DP)

    文章目录 1. 题目 2. 解题 1. 题目 假如有一排房子,共 n 个,每个房子可以被粉刷成红色.蓝色或者绿色这三种颜色中的一种,你需要粉刷所有的房子并且使其与相邻的两个房子颜色不能相同. 当然,因 ...

  6. LeetCode 1223. 掷骰子模拟(DP)

    1. 题目 有一个骰子模拟器会每次投掷的时候生成一个 1 到 6 的随机数. 不过我们在使用它时有个约束,就是使得投掷骰子时,连续 掷出数字 i 的次数不能超过 rollMax[i](i 从 1 开始 ...

  7. LeetCode 1155. 掷骰子的N种方法(DP)

    1. 题目 这里有 d 个一样的骰子,每个骰子上都有 f 个面,分别标号为 1, 2, -, f. 我们约定:掷骰子的得到总点数为各骰子面朝上的数字的总和. 如果需要掷出的总点数为 target,请你 ...

  8. LeetCode 1139. 最大的以 1 为边界的正方形(DP)

    1. 题目 给你一个由若干 0 和 1 组成的二维网格 grid,请你找出边界全部由 1 组成的最大 正方形 子网格,并返回该子网格中的元素数量.如果不存在,则返回 0. 示例 1: 输入:grid ...

  9. 程序员面试金典 - 面试题 17.23. 最大黑方阵(DP)

    1. 题目 给定一个方阵,其中每个单元(像素)非黑即白. 设计一个算法,找出 4 条边皆为黑色像素的最大子方阵. 返回一个数组 [r, c, size] ,其中 r, c 分别代表子方阵左上角的行号和 ...

最新文章

  1. php5.4dev版本是,ubuntu 编译安装php5.4以上版本
  2. mysql 调用webservice_C#调用Webservice的代码实现方式汇总
  3. 【版本工具】Git-浅谈git命令
  4. 解决android应用程序适用新老android系统版本方法
  5. 傅立叶变换、拉普拉斯变换、Z变换之间 篇一
  6. VTK:PolyData之Casting
  7. java数据库易错程序题_JAVA程序改错 (易错题)(示例代码)
  8. leetcode 654. 构造最大二叉树 思考分析
  9. nginx配置文件简单理解(自用)
  10. 数据科学包10-pandas高级内容之时间序列
  11. SpringBoot集成微信支付(二维码支付)
  12. 席位分配问题——惯例Q值法和d'hondt法的MATLAB程序
  13. ccf b类论文相当于sci几区_你写SCI论文是否也经历了这三个阶段?
  14. ATK-DTU-M750 物联网模块+MQTT(阿里云)配置(一)
  15. windows 10专业版 1709 使用curl命令
  16. 这个【vue】项目,让我明白了…
  17. 微信公众号企业认证/企业公众号微信认证
  18. red and black trees(红黑二叉树)
  19. Python生成九宫格图片
  20. JarvisOJ level4

热门文章

  1. 2021银川Problem D. Farm(不保证正确性)
  2. 2020牛客国庆集训派对day4 What Goes Up Must Come Down
  3. 【无码专区5】01串(大讨论+构造)
  4. jzoj1282-资源勘探【统计】
  5. bzoj1013,luogu4035-[JSOI2008]球形空间产生器【高斯消元】
  6. P2842-LJJ算数【数论,快速幂】
  7. 欢乐纪中某B组赛【2018.12.22】
  8. 初一级练习题(2019.3.8)
  9. MYSQL 入门全套
  10. 学习分布式不得不会的BASE理论