题目基本要求:

  • 输出最大子列和结果

  • 输出最大子列的头和尾(若结果不唯一,要输出出现最大子列最早的那两个数字)

  • 若全为负数则输入整个数列的首个数字和末尾数字(下面用左标和右标表示)

  • 若为单个数,则左右都取这个数
    注意:这里有个坑点(有一段0在最大的子列前面的的话,头要取到0)举个例子:0 0 0 0 1 2 3 4 0 -10 结果是:10 0 4

    最大子列的特点:最大子列中第一个数可以为0,但是不可以为负数,而最后一个数字不可以为0(题意:取出现最早的),也不能为负数,凭借这个我们可以在最后判断一下一些特殊情况。

代码如下:

#include<stdio.h>
int main(){int tip = 0; //用来判断当下是否需要改变左列首位记录int maxleft = -1;//用于保留最大子列的最左的数字int K = 0;long this_num = 0,max_num = 0; //记录当下值和最大值int left = -1,right = 0; /*记录左标和右标左标是根据this_num为0的时候进行改值,而右标是根据取到最大子列的时候进行改值左标要不断的改,所以要有变量记录最大子列的左标*/scanf("%d",&K); for(int i = 0; i < K; i++) {int num = 0;scanf("%d",&num);if(i == 0) left = maxleft = num; //将最大左标和左标都取首位if(i == K-1 && right == 0 && left < 0)//根据上述最大子列特征right = num;                    //到最后一步的时候判断一下,右标是否为0(根本没变过值),和left是否小于0//这个情况是为了防止所有的数字都为负数                            if(this_num == 0 && num >= 0 && tip == 0){  //注意左位可取0,tip是防止0无法赋值给left(若没有tip提示,上述例子的结果是 10 1 4)left = num;tip = 1;   //改变tip值是为了停止改变左值,说明先处于累加求和的状态。}this_num += num;  //累加if(this_num > max_num) {  //若进入了这个判断体,就要保留最大值,和最大子列左标和右标max_num = this_num;            right = num;maxleft = left;} else if(this_num < 0) {  //若进入了这个判断体,就要将当下和变为0,和准备记录新的左标this_num = 0;tip = 0;}}//最后是为了防止只有一个零,而其余全是负数的时候,这时候左右标都得取0(有特性可知,左标可以被赋值到0,但右标不可)if(left == 0 && right == 0) {maxleft = right = 0    ;   }printf("%ld %d %d",max_num,maxleft,right);}

数据结构还是很有意思的,fighting!

浙江大学mooc的数据结构_课后习题01-复杂度2 Maximum Subsequence Sum相关推荐

  1. 01-复杂度2 Maximum Subsequence Sum (25分)(数据结构)(C语言实现)

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

  2. java课后习题七解析_《Java基础入门》_课后习题解析.doc

    <Java基础入门>_课后习题解析 <Java基础入门>课后习题 Java开发入门 一.填空题 1.Java的三大体系分别是_JavaSE_____._JavaEE_____. ...

  3. C#网络编程_课后习题答案

    一.说明 此为<C#网络应用编程>第三版 马骏 部分课后习题答案. 二.目录 第一章-网络应用编程入门知识 第三章-进程.线程与应用程序域 第四章-数据流与数据的加密和解密 第五章-异步编 ...

  4. 算法 Maximum Subsequence Sum 2004年浙江大学计算机专业考研复试真题

    全部每周作业和视频思考题答案和解析 见 浙江大学 数据结构 思考题+每周练习答案汇总 题目:Given a sequence of K integers { N​1​​, N​2​​, ..., N​ ...

  5. 黑马程序员《JavaWeb程序设计案例教程》_课后习题答案

    第一章 [测一测] 学习完前面的内容,下面来动手测一测吧,请思考以下问题: 1.请描述HTML.CSS.DOM.JavaScript分别表示的含义. 2.请列举出HTML常用的标记.(至少10个) 3 ...

  6. 数据通信与计算机网络第二版课后题答案,数据通信与计算机网络习题答案(邢彦辰)_课后习题答案 精品...

    数据通信与计算机网络习题参考答案 第1章计算机网络概述 一.填空题 1.计算机.通信 2.FEP.CCP 3.数据通信.资源共享.分布式处理和均衡负荷.提高安全可靠性 4.资源.通信 5.ARPA 6 ...

  7. 第二课_课后习题解答

    1.信息系统集成有哪些特点: 1.信息系统集成要以满足用户要求为根本出发点: 2.信息系统集成不只是设备选择和供应,更重要的它是具有高技术含量的工程过程,要面向用户需求提供全面解决方案,其核心是软件: ...

  8. 请编写出一个html页面 令其输出,javaweb程序设计案例教程_课后习题1.pdf

    第一章 [测一测] 学习完前面的内容,下面来动手测一测吧,请思考以下问题: 1.请描述HTML .CSS. .JavaScript 分别表示的含义. 2 .请列举出HTML 常用的标记.(至少10 个 ...

  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 ...

最新文章

  1. python 模块与包_Python 模块与包
  2. jQuery禁止Ajax请求缓存
  3. Wordpress不同页面显示不同小工具
  4. 2021年上半年金融科技动向
  5. c语言程序设计19,C语言程序设计19.pdf
  6. 霍金遗作《十问:霍金沉思录》出版 马化腾作跋纪念
  7. android+警告声音,android – 如何使用带有setAudioAttributes的警报音量播放铃声?
  8. 给技术型创业者的几点建议
  9. 警惕同学录联系信息等泄露!
  10. NSCT(Nonsubsampled Contourlet变换)
  11. 三分钟解决Matlab中文乱码问题
  12. Confluence 空间附件(Attachments )宏
  13. idea谷歌翻译插件translation失效问题(可行)
  14. python计算复合年化增长率、年化波动率与夏普比率
  15. WebDriver - 设置浏览器启动语言
  16. ONOS架构中的YANG、P4 Runtime
  17. 保姆级教学!Xcode 配置 OpenGL 环境
  18. vue初学篇----过滤器(filters)
  19. tdengine和mysql区别_TDEngine Game Framework
  20. 微软笔记本服务器怎么重装系统,笔记本重装系统,详细教您笔记本怎么重装win10系统...

热门文章

  1. 可以免费做题,免费查答案的模拟计算机等级考试软件
  2. JS-写一个函数,返回参数的平方和
  3. AMBER分子动力学简例
  4. 【ELM分类】基于matlab遗传算法优化ELM神经网络数据分类【含Matlab源码 2138期】
  5. 逆向中常见寄存器及常用汇编指令
  6. 【leetcode慢速刷题记录】1. 两数之和
  7. Cow Tennis Tournament
  8. linux运行php文件
  9. 社区运营秘笈:病毒式营销!
  10. 100题前端面试[题目+答案] -- 自用