17.1-2
分析:
如书中所示,increment(A)函数中,A数组来存放二进制,所以increment(A)函数实质是将一个十进制整数用二进制来表示,然后在整数加1的时候,将二进制做相应的变化。
那么decrement(A)就可以知道,其实质是将一个十进制整数用二进制来表示,然后在整数减1的时候,将二进制做相应的变化。
现在给出几个十进制——二进制对照来讲:

十进制表示: 1 2 3 4 5
二进制表示: 0001 0010 0011 0100 0101

从表中看到:
当5减1变为4时候,只有二进制0101中的末尾的1变为0
当4减1变为3时候,二进制0100中的末尾的两个0变为1,与尾端最相邻近的1变为了0
当3减1变为2时候,只有二进制0011中的末尾的1变为0
当2减1变为1时候,二进制0010中的末尾的一个0变为1,与尾端最相邻近的1变为了0
综上,可以看到变化了、
答案:
首先写出decrement(A)的伪代码:
(ps:上述伪代码中的“if A[0]==1"条件判断其实可以去掉,因为后面的"if i <A.length"实现了该功能,但是为了便于理解,所以我很冗余的写出来了)
通过上述代码可知:
A[0],A[1],A[2]…A[i] (i为变化位)在每一次的decrement()操作中都会改变,而A数组的长度为K。所以一次的decrement操作的最坏的时间代价是O(k)(或者:色它(k)),所以n次decrement操作的时间代价为:色它(n * k)

算法导论第三版 17.1-2习题答案相关推荐

  1. 算法导论第三版 第15章习题答案

    2020/11/18:初稿,增加Python代码实现,修订参考文献部分错误(如15.1的第4题) 参考文献: https://walkccc.github.io/CLRS/Chap15/ https: ...

  2. 算法导论第三版 第2章习题答案

    2020/10/27: 增加伪代码相应的Python实现代码. 2020/11/13:修订第2节第3题的bug. 参考文献:https://ita.skanev.com/ 2 Getting Star ...

  3. 给出TREE_INSERT过程的非递归版本(算法导论第三版12.3-1)

    给出TREE_INSERT过程的非递归版本(算法导论第三版12.3-1) template<typename T> void insert_recursive(BinaryTree< ...

  4. 算法导论第三版2.2答案

    算法导论第三版2.2答案 2.2 算法导论第三版2.2答案 2.2-1 2.2-2 2.2-3 2.2-4 汇总传送门 2.2-1 O(n3)O(n^3)O(n3) 2.2-2 /* * @Autho ...

  5. 写出TREE-PREDECESSOR的伪代码(算法导论第三版12.2-3)

    写出TREE-PREDECESSOR的伪代码(算法导论第三版12.2-3) TREE-PREDECESSOR(x)if x.left != NILreturn TREE-MAXIMUM(x.left) ...

  6. 写出TREE-MINIMUM 和TREE-MAXIMUM的递归版本(算法导论第三版12.2-2)

    写出TREE-MINIMUM 和TREE-MAXIMUM的递归版本(算法导论第三版12.2-2) template<typename T> BinaryTreeNode<T>* ...

  7. 二叉树的中序遍历非递归方法(算法导论第三版12.1-3)

    二叉树的中序遍历非递归方法(算法导论第三版12.1-3) 1⃣️用栈实现 template<typename T> void inorder_tree_walk_non_recursion ...

  8. 二叉树的遍历(算法导论第三版12.1-4)(包含先序遍历,后序遍历和中序遍历)

    二叉树的遍历(算法导论第三版12.1-4) 1⃣️先序遍历 template<typename T> void preorder_tree_wald(BinaryTreeNode<T ...

  9. 算法导论第三版第十一章11.1-4

    算法导论第三版第十一章11.1-4 我们希望在一个非常大的数组上,通过利用直接寻址的方式来实现一个字典.开始时,该数组中可能包含一些无用信息,但要堆整个数组进行初始化时不太实际的,因为该数组的规模太大 ...

  10. 利用链表实现可合并堆(算法导论第三版思考题10-2)

    利用链表实现可合并堆(算法导论第三版思考题10-2) a 链表已排序 创建一个空堆: Θ(1) 插入:Θ(n),插入后依然保持排序 最小值:Θ(1),第一位便是 取最小值:Θ(1) 合并:Θ(n),可 ...

最新文章

  1. python 字符串 转 dict
  2. CvMat,Mat和IplImage之间的转化和拷贝
  3. 【收藏备用】服务器基本故障及排查方法
  4. JAVAEE框架之Spring新注解
  5. easyui、表格中添加操作一列,将操作下设置为修改,点击修改弹出该行对象的编号。
  6. 【2017年第2期】专题:大数据管理与分析
  7. PostgreSQL的 create index concurrently
  8. 利用贝叶斯分类器进行文本挖掘---笔记
  9. 各种乐器与人声的频率特性说明
  10. 检查容器内的磁盘占用shell(check_container_disk.sh)
  11. C#算法练习,求e,求π
  12. Min GW 安装教程(转载)
  13. matlab ignoreanalyticconstraints,MATLAB函数随笔之计算篇
  14. 为您详解在ChemDraw中进行3D建模的方法
  15. 首家完成并购并进行重新备案公示的企业征信牌照公司-湖南省征信
  16. 迪士尼和李宁合作推出“李宁复古运动米奇系列”服饰
  17. 【ML特征工程】第 2 章 :简单数字的花式技巧
  18. 华为面试:勇敢星实习生
  19. 分享一款超40款多功能工具箱组合微信小程序源码_支持流量主,聚集市面上大部分功能的小程序,无需服务器和域名!源码拿去!
  20. 软件测试4-接口测试

热门文章

  1. P2525 Uim的情人节礼物·其之壱-全排列
  2. 电力电子技术(15)——晶闸管直流电动机调速相控电路的驱动控制
  3. 国内的商业与开源 CMS
  4. 搜狗输入法 rpm包_输入法哪个好用?2019年终横评来袭
  5. 合肥工业大学计算机课改没,工程力学性能课改分析
  6. 移动通信原理学习笔记之一
  7. 如何阅读Java源码?
  8. 汇编语言程序设计--基于ARM
  9. maven jersey mysql_Maven和Jersey Framework开发REST风格Web Service
  10. 《概率论与数理统计》(浙大第四版)第一章总结笔记(纯手写)