浙江大学mooc的数据结构_课后习题01-复杂度2 Maximum Subsequence Sum
题目基本要求:
输出最大子列和结果
输出最大子列的头和尾(若结果不唯一,要输出出现最大子列最早的那两个数字)
若全为负数则输入整个数列的首个数字和末尾数字(下面用左标和右标表示)
若为单个数,则左右都取这个数
注意:这里有个坑点(有一段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相关推荐
- 01-复杂度2 Maximum Subsequence Sum (25分)(数据结构)(C语言实现)
Given a sequence of K integers { N1 , N2 , -, NK }. A continuous subsequence is defined to be ...
- java课后习题七解析_《Java基础入门》_课后习题解析.doc
<Java基础入门>_课后习题解析 <Java基础入门>课后习题 Java开发入门 一.填空题 1.Java的三大体系分别是_JavaSE_____._JavaEE_____. ...
- C#网络编程_课后习题答案
一.说明 此为<C#网络应用编程>第三版 马骏 部分课后习题答案. 二.目录 第一章-网络应用编程入门知识 第三章-进程.线程与应用程序域 第四章-数据流与数据的加密和解密 第五章-异步编 ...
- 算法 Maximum Subsequence Sum 2004年浙江大学计算机专业考研复试真题
全部每周作业和视频思考题答案和解析 见 浙江大学 数据结构 思考题+每周练习答案汇总 题目:Given a sequence of K integers { N1, N2, ..., N ...
- 黑马程序员《JavaWeb程序设计案例教程》_课后习题答案
第一章 [测一测] 学习完前面的内容,下面来动手测一测吧,请思考以下问题: 1.请描述HTML.CSS.DOM.JavaScript分别表示的含义. 2.请列举出HTML常用的标记.(至少10个) 3 ...
- 数据通信与计算机网络第二版课后题答案,数据通信与计算机网络习题答案(邢彦辰)_课后习题答案 精品...
数据通信与计算机网络习题参考答案 第1章计算机网络概述 一.填空题 1.计算机.通信 2.FEP.CCP 3.数据通信.资源共享.分布式处理和均衡负荷.提高安全可靠性 4.资源.通信 5.ARPA 6 ...
- 第二课_课后习题解答
1.信息系统集成有哪些特点: 1.信息系统集成要以满足用户要求为根本出发点: 2.信息系统集成不只是设备选择和供应,更重要的它是具有高技术含量的工程过程,要面向用户需求提供全面解决方案,其核心是软件: ...
- 请编写出一个html页面 令其输出,javaweb程序设计案例教程_课后习题1.pdf
第一章 [测一测] 学习完前面的内容,下面来动手测一测吧,请思考以下问题: 1.请描述HTML .CSS. .JavaScript 分别表示的含义. 2 .请列举出HTML 常用的标记.(至少10 个 ...
- 浙大数据结构课后习题 练习一 7-1 Maximum Subsequence Sum (25 分)
Given a sequence of K integers { N1, N2, ..., NK }. A continuous subsequence is defined to ...
最新文章
- python 模块与包_Python 模块与包
- jQuery禁止Ajax请求缓存
- Wordpress不同页面显示不同小工具
- 2021年上半年金融科技动向
- c语言程序设计19,C语言程序设计19.pdf
- 霍金遗作《十问:霍金沉思录》出版 马化腾作跋纪念
- android+警告声音,android – 如何使用带有setAudioAttributes的警报音量播放铃声?
- 给技术型创业者的几点建议
- 警惕同学录联系信息等泄露!
- NSCT(Nonsubsampled Contourlet变换)
- 三分钟解决Matlab中文乱码问题
- Confluence 空间附件(Attachments )宏
- idea谷歌翻译插件translation失效问题(可行)
- python计算复合年化增长率、年化波动率与夏普比率
- WebDriver - 设置浏览器启动语言
- ONOS架构中的YANG、P4 Runtime
- 保姆级教学!Xcode 配置 OpenGL 环境
- vue初学篇----过滤器(filters)
- tdengine和mysql区别_TDEngine Game Framework
- 微软笔记本服务器怎么重装系统,笔记本重装系统,详细教您笔记本怎么重装win10系统...