习题10求解的是查找数组中总和最接近于0的子数组。

们可以尝试使用“将x[0...n-1]扩展为x[0...n]”的思想,建立一个累积和表cumSum进行处理。这里假设输入数组为x[n],那么则有

由此我们发现,cumSum两个元素的差值恰好对应一个子数组的和。

剩下我们只需要对cumSum进行排序,然后寻找最接近(差值的绝对值最小)的相邻的两个数即可。在cumSum和数组中最接近的相邻两个数表示的就是原来数组x中两个最接近的子数组的和。然后这两个子数组之间的隔着的数的和就是最接近于0的子数组的和。因为两个子数组之间隔着的数的和就是上面cumSum中两个最接近的相邻两个数的差。

如果要求得是最接近于数值t的子数组,那么就不能够采用上面的方法了。不能够采用找cursum相邻数中差值最接近于t的方法来求解。这种思路只适合于最接近于0.因为cursum经过排序后,相邻两数一定是最接近的,也是最有可能接近0的。所以比较相邻两数的差值找一个绝对值最小的就可以了。但如果要求得是最接近于t的,那么很有可能就不是相邻的两数差值最接近了,而有可能是不相邻的两个数的差值的绝对值最接近。对于这种情况采用暴力搜索可能会比较好

习题11

收费站i和j,cursum[j] -cursum[i-1]就表示在i和j内行驶的路段费用,并且只占用 curarr[n]的线性空间。而且这里不需要再对cursum进行排序。

习题13

  《编程之美》2.15节。

  采用暴力方法,需要遍历每个子数组,并计算和,O(N^4 * SUM).  (SUM为计算每个子数组的和的时间).

  动态规划的方法。

  将二维转化为一维。枚举矩形上下边界,对每一个确定的上下边界,只有左右边界是待定的,类似于一维子数组最大和的方式。

编程珠玑——第八章习题10扩展和习题11相关推荐

  1. 编程珠玑第八章——习题10查找数组中总和最接近0的子数组

    内容来自互联网,做了一定修改 方法1: 这个问题和求子数组最大值优点相似,但解法不同,如果按照求子数组最大值的方法来求解,我们可以求出以j为截止的最大值和最小值,如果最大值和最小值都>0,那么最 ...

  2. 编程珠玑第八章——分治算法求解数组中的最大的连续和

    关键在于把数组分为两个部分a,b.最大的连续和要么在a要么在b,另外还有可能就是跨越a,b的边界,将跨越边界的最大向量称为mc. 一个注意的地方就是mc正在a中的部分包含右边边界的最大子向量,而mc在 ...

  3. 编程珠玑第12章习题

    内容来自互联网,做了一些修改 参考: http://blog.csdn.net/tianshuai1111/article/details/7583297 http://blog.csdn.net/t ...

  4. 编程珠玑第二章习题答案

    转载自互联网,并做了修改 1.提供单词和词典,找到该单词的所有变位词,可以事先花时间和空间处理下该词典. 为了找出给定单词的所有变位词,首先是计算给定单词的标识.如果不允许预处理,只能够顺序读取文件, ...

  5. 编程珠玑之第二章习题5

    问题描述: n元一维向量旋转问题数将向量ab变为ba.如何将向量abc变为cba? (这对交换非相邻内存块问题进行了建模) 问题解析: 1.这里需要用到一个重要的性质:CBA=(ArBrCr)r    ...

  6. 【编程珠玑】第八章 算法设计技术

    一,概述 问题:求一维数组中连续子向量的最大和. 例如:a[6]={3,4,-2,-9,10,8}; 则最大连续子向量的和 为 10+8 = 18 1)解法一:简单算法 #include <st ...

  7. 《编程珠玑,字字珠玑》45678读书笔记——编程技巧

    写在最前面的 就像上一篇文章说的,"编程永远是后话"!在有了可靠的问题分析过程和数据结构的选择,能正确运行的"二分搜索"代码出现之前,把其主要的思路先在草稿上实 ...

  8. 操作系统使用户和计算机的接口 对吗,计算机操作系统教程--核心与设计原理习题10答案...

    习题 10 10.1何谓操作系统与用户的接口?有哪几种类型?其主要的功能是什么? 操作系统与用户接口的目标就是提供一个友好的用户访问操作系统的接口,使得用户能将自己的要求告诉操作系统,同时也要构造一个 ...

  9. 【编程珠玑】陪着奶猫看看书--《编程珠玑》第一章

    陪着奶猫看看书–<编程珠玑>第一章 首先说说小奶猫我为什么要读<编程珠玑>这本神作,当年小奶猫刚刚进入大学时候是个纯洁的少年,啥都不懂,要是哪个女生下午在外面问我带身份证没有, ...

最新文章

  1. 如何安装Oracle客户端(Oracle Instant Client)
  2. 使用TensorFlow概率预测航空乘客人数
  3. 正则表达式之反向引用
  4. k8s核心技术-集群安全机制(概述)---K8S_Google工作笔记0038
  5. redhat和ubuntu系统下挂载ntfs文件系统的方法(转载)
  6. C++调用python的函数的说明(整个调用流程)
  7. 路由器信息备份还原指南
  8. 台达变频器485通讯接线图_台达变频器怎么接线 台达变频器接线图详解
  9. java做微信支付notify_url异步通知服务端的写法
  10. 什么是Linux内核?它有什么功能?
  11. 手机使用小技巧,简单易懂 7610用蓝牙发送SIS文件方法(转)
  12. ipad MOV转mp4
  13. 8.5 Polytopes (多面体)
  14. 详解搜索引擎的高级搜索语法指令
  15. vue2.0生命周期数据共享
  16. 国内十大优质炒白银交易app软件排名(2023精选版)
  17. 微信开启指纹支付功能 单账户每日限额5000元
  18. JS 内存泄漏与垃圾回收机制
  19. Chapter 1 (Linear Equations in Linear Algebra): Row reduction and echelon forms (行化简与阶梯式矩阵)
  20. 思科系统公司(Cisco Systems, Inc.)

热门文章

  1. 超声波测距测速升压可调中周倒车雷达变频器传感器1:10
  2. 海军工程大学学生电子课程-DIY Final预验收
  3. 第十五届全国大学生智能汽车竞赛 人工智能创意组总决赛
  4. 傅里叶,请再帮我们一次吧....
  5. shell shocked什么意思_shell脚本从入门到放弃
  6. 静态移值编译的关键环境变量
  7. 初识片选信号和中断控制器
  8. 9月20华为鸿蒙,荣耀先行!华为智慧屏9月发布:搭鸿蒙系统和自研芯片
  9. lwip路由实现_基于LWIP协议栈对路由缓存数据结构实现改进设计
  10. python修改类属性值_python编程入门到实践:直接修改属性的值和通过方法修改属性的值...