Sample Input:

  1. 10
  2. -10 1 2 3 4 -5 -23 3 7 -21

Sample Output:

  1. 10 1 4

题目有一个测试点是“最大和前面有一段是0”,所以呢基本上就是在老师的代码的基础上做一点点的修改。每次开始新的子序列记录一个位置,当更新最大子序列和的时候更新最大子序列和的start 和 end。

  1. #include <stdio.h>
  2. int main(int argc, char const *argv[])
  3. {
  4. int i, k;
  5. scanf("%d", &k);
  6. int numbers[k];
  7. for (i = 0; i < k; i++) {
  8. scanf("%d", &numbers[i]);
  9. }
  10. int best_sum, current_sum;
  11. int best_start, best_end, current_start;
  12. best_sum = -1;
  13. current_sum = 0;
  14. for (i = 0; i < k; i++) {
  15. current_sum += numbers[i];
  16. if (current_sum > best_sum) {
  17. best_sum = current_sum;
  18. best_start = current_start;
  19. best_end = i;
  20. } else if (current_sum < 0) {
  21. current_sum = 0;
  22. current_start = i + 1;
  23. }
  24. }
  25. if (best_sum > 0) {
  26. printf("%d ", best_sum);
  27. printf("%d %d\n", numbers[best_start], numbers[best_end]);
  28. } else {
  29. printf("0 %d %d\n", numbers[0], numbers[k-1]);
  30. }
  31. return 0;
  32. }

Python 版

  1. k = input()
  2. numbers = list(map(int, input().split()))
  3. best_sum = -1
  4. current_sum = 0
  5. best_start = best_end = current_start = 0
  6. for current_end, x in enumerate(numbers):
  7. current_sum += x
  8. if current_sum > best_sum:
  9. best_sum = current_sum
  10. best_start = current_start
  11. best_end = current_end
  12. elif current_sum < 0:
  13. current_sum = 0
  14. current_start = current_end + 1
  15. if best_sum >= 0:
  16. print(best_sum, numbers[best_start], numbers[best_end])
  17. else:
  18. print(0, numbers[0], numbers[-1])

01-复杂度2 Maximum Subsequence Sum (25分)的更多相关文章

  1. 中国大学MOOC-陈越、何钦铭-数据结构-2015秋 01-复杂度2 Maximum Subsequence Sum (25分)

    01-复杂度2 Maximum Subsequence Sum   (25分) Given a sequence of K integers { N​1​​,N​2​​, ..., N​K​​ }. ...

  2. PTA 01-复杂度2 Maximum Subsequence Sum (25分)

    题目地址 https://pta.patest.cn/pta/test/16/exam/4/question/663 5-1 Maximum Subsequence Sum   (25分) Given ...

  3. PAT - 测试 01-复杂度2 Maximum Subsequence Sum (25分)

    1​​, N2N_2N​2​​, ..., NKN_KN​K​​ }. A continuous subsequence is defined to be { NiN_iN​i​​, Ni+1N_{i ...

  4. 01-复杂度2 Maximum Subsequence Sum (25 分)

    Given a sequence of K integers { N​1​​, N​2​​, ..., N​K​​ }. A continuous subsequence is defined to ...

  5. 1007 Maximum Subsequence Sum (25分) 求最大连续区间和

    1007 Maximum Subsequence Sum (25分)   Given a sequence of K integers { N​1​​, N​2​​, ..., N​K​​ }. A ...

  6. 1007 Maximum Subsequence Sum (25 分)

    1007 Maximum Subsequence Sum (25 分)   Given a sequence of K integers { N​1​​, N​2​​, ..., N​K​​ }. A ...

  7. 数据结构练习 01-复杂度2. Maximum Subsequence Sum (25)

    Given a sequence of K integers { N1, N2, ..., NK }. A continuous subsequence is defined to be { Ni, ...

  8. 01-复杂度2. Maximum Subsequence Sum (25)

    Given a sequence of K integers { N1, N2, ..., NK }. A continuous subsequence is defined to be { Ni, ...

  9. 浙大数据结构课后习题 练习一 7-1 Maximum Subsequence Sum (25 分)

    Given a sequence of K integers { N​1​​, N​2​​, ..., N​K​​ }. A continuous subsequence is defined to ...

  10. PAT Advanced 1007 Maximum Subsequence Sum (25 分)

    Given a sequence of K integers { N​1​​, N​2​​, ..., N​K​​ }. A continuous subsequence is defined to ...

随机推荐

  1. PAT (Advanced Level) Practice 1003 Emergency 分数 25 迪杰斯特拉算法(dijkstra)

    As an emergency rescue team leader of a city, you are given a special map of your country. The map s ...

  2. MES系统与ERP系统信息集成有哪些原则?

    首先,MES和ERP应该是两个独立的系统,简单的说,ERP与MES有点像公司总部与分厂的关系,ERP向MES发指令,MES向ERP做汇报,所以可以按照这个思维来考虑或类比来处理.从企业的管理来说,ER ...

  3. OpenDataV低代码平台增加自定义属性编辑

    上一篇我们讲到了怎么在OpenDataV中添加自己的组件,为了让大家更快的上手我们的平台,这一次针对自定义属性编辑,我们再来加一篇说明.我们先来看一下OpenDataV中的属性编辑功能. 当我们拖动一 ...

  4. DP 优化小技巧

    收录一些比较冷门的 DP 优化方法. 1. 树上依赖性背包 树上依赖性背包形如在树上选出若干个物品做背包问题,满足这些物品连通.由于 01 背包,多重背包和完全背包均可以在 \(\mathcal{O} ...

  5. MatrixOne从入门到实践02——源码编译

    MatrixOne从入门到实践--源码编译 ​ 在部署MatrixOne前,我们可能会比较纠结使用哪个版本合适,MatrixOne在github上有各个版本的Releases,包含源码包和适用于Lin ...

  6. 开源WindivertDotnet

    0 前言 Hi,好久没有写博客,因为近段时间没有新的开源项目给大家.现在终于又写了一篇,是关于网络方向的内容,希望对部分读者有帮助. 1 WinDivert介绍 WinDivert是windows下为 ...

  7. 商品期货通用模型JF1

    更多精彩内容,欢迎关注公众号:数量技术宅,也可添加技术宅个人微信号:sljsz01,与我交流. 行情不确定性加剧 回顾2022年上半年的期货市场行情,在一个个宏观事件的不断冲击下,期货市场的不确定性加 ...

  8. echarts在Vue项目中的实际运用效果图

    文章目录 1.在后台系统首页中.可以根据需求制作相应的图表 2.在Vue中使用echarts的详细过程参照这个链接 1.在后台系统首页中.可以根据需求制作相应的图表 2.在Vue中使用echarts的 ...

  9. 齐博X1-栏目的终极方法get_sort

    本节说明栏目的最终方法get_sort 我们之前讲的一系列fun函数调用栏目的方法都是基于get_sort这个公共方法而来 我们来看下这个函数的具体参数这个方法有四个参数: id:也就是栏目id,经常 ...

  10. 齐博x1动态改变标签调用不同频道的数据

    标签默认需要设置标签参数 type 指定调用哪个频道的数据,比如下面的代码,需要默认指定商城的数据, {qb:tag name="qun_pcshow_shop001" type= ...