算法设计与分析基础 第六章谜题
习题6.1
9.数字填空 给定n个不同的整数以及一个包含n个空格的序列,每个空格之间事先给定有不等(>或<)符号,请设计一个算法,将n个整数填入这n个空格中并满足不等式约束。例如,数4,6,3,1,8可以填在这样的5个空格中:
解答:将n个正整数从小到大排序,然后将数字填入空格之中:从左到右遍历每一个空格,若空格之后是小于号,则填入当前正整数序列中的最小值;若为大于号,则填入当前正整数序列中的最大值。最后一个空格填入序列中最后留下的数字。
习题6.2
11.关灯游戏 这个单人游戏有一块n×n的面板,都是1×1的电灯小面板组成的。每个小面板都有一个开关可以打开或关闭,这会同时打开或关闭水平和垂直邻接的4块小面板的灯(因此,拨动角上的面板的开关会改变3个面板的灯,拨动边界上的非角落的面板开关会改变4个面板的灯)。如果知道初始时那些灯是点亮的,如何关闭所有的灯呢?
a. 请说明求解该问题可以利用mod2运算和解线性方程,该方程的系数和等式右边都是0/1。
解答:用0/1表示灯灭/灯亮,分别用S,F表示起始和目标面板状态,求解该问题可以用以下方程表示:
其中xij 表示所求解,Aij 表示按下第i行第j列开关对状态的改变,例如在n=3时:
b. 利用高斯消去法解该问题的2×2全1实例,也就是说2×2面板上所有的灯一开始都亮着。
解答:线性方程为
即
利用高斯消去法得
解得
c. 利用高斯消去法解该问题的3×3全1实例,也就是说3×3面板上所有的灯一开始都亮着。
解答: ,其余项为零。
习题6.3
9.为包含实数的2-3树设计一个算法,来计算它的值域(也就是说,最大数和最小数的差),并确定该算法的最差效率。
解答:2-3树中的最小和最大键分别是最左边叶子中的第一个键和最右边叶子中的第二个键。因此,搜索从根到叶的最左指针的路径以及从根到叶的最右指针的路径。由于2-3树的高度始终为Θ(logn)算法的时间效率为Θ(logn)+Θ(logn)+Θ(1)=Θ(logn)。
习题6.4
12.面条排序 想象一把意大利生面条,每一根面条代表一个需要排序的数字。
a. 描述一个“面条排序”算法——一种利用了这种非正统描述的排序算法。
解答:将一堆意大利面条杆垂直放在桌面上,重复地取出其中剩余的最高杆,直到不再留下杆。 这将按照长度的降序对杆进行分类。
b. 这个在计算机科学界流传的例子,如何从一般性上阐述了本章的主题,又如何特别阐述了堆排序?
解答:该方法与堆排序共享其主要思想:以一种简单地查找和删除最大项目的方式来排序。 从更一般的角度来看,意大利面条排序是表示变治算法的一个例子。
习题6.5
12.多项式内插 给定n个数据点(xi, yi)的集合,其中任意两个xi均不同。求一个至多n-1阶的多项式p(x),使得对于每个i=1,2,…,n,都有p(xi) = yi。
解答: , 当x=xi时,只有包含yi的那一项不为零。
习题6.6
11.吃醋的丈夫谜题 有n对夫妇要越过一条河。他们有一条船,但一次最多只能载两个人。为了使情况复杂化,我们假设所有的丈夫都爱吃醋,因此在过河的全过程中,即使有他人在场,如果没有本人的陪伴,丈夫也不会允许妻子和其他妻子的丈夫在河的同一个岸上。在这种约束下,他们能越过河去吗?
a. 对于n=2的情况,解这个问题。
解答:用H代表丈夫,W代表妻子,画出状态空间图,共有四条路径:
b. 对于n=3的情况,解这个问题,这是该问题的经典版本。
解答:
c. 对于任何n>=4的情况,这个问题有解吗?如果有解,请指出他们一共要过多少次河;如果无解,请解释一下原因。
解答:该问题n≥4时无解。在3对夫妇的基础上,如果我们从1个或多个额外的夫妇开始,将不会产生新的状态,并且在六次过河之后,将到达n-1对夫妇和船在初始河岸,有一对夫妇在另一岸的状态。 从该状态唯一允许的变化是将该夫妇运送到另一岸而回到之前的状态。
12.双n多米诺 多米诺是一种骨牌,两面刻有点数。一幅标准的“双六”多米诺有28块骨牌:每一块为从(0,0)到(6,6)的无序整数对。也就是说,一幅“双n”多米诺是由从(0, 0)到(n, n)的无序整数对构成。请确定n的所有值,使得在“双n”多米诺里的所有骨牌能组成一个环。
解答:可以将该问题转化为具有n + 1个顶点的完全图的欧拉回路问题。在该图中顶点i表示在双n多米诺两面上的点数,顶点i和j之间的边表示有i和j点的多米诺骨牌,组成一个环可以转化成欧拉回路问题。根据定理可知当n为偶数时具有偶数连通度,此时可以构成一个环。
算法设计与分析基础 第六章谜题相关推荐
- 算法设计与分析基础 第五章谜题
习题5.1 11.Tromino谜题 Tromino是一个由棋盘上的三个1×1方块组成的L型骨牌.我们的问题是,如何用Tromino覆盖一个缺少了一个方块的2n×2n棋盘.除了这个缺失的方块,Trom ...
- 算法设计与分析基础 第七章谜题
习题7.1 6. 祖先问题要求在一棵给定的n顶点二叉树中,确定一个顶点u是否是顶点v的祖先.设计一个属于O(n)的输入增强算法,使我们可以在常量时间内获得树的每一对顶点的足够信息,来对问题求解. 分析 ...
- 第一章 算法设计与分析基础知识
系列文章目录 第一章 算法设计与分析基础知识 第二章 算法的分治策略 第三章 算法的动态规划 第四章 算法的贪心法 -- @[TOC](这里写目录标题) # 一级目录 ## 二级目录 ### 三级目录 ...
- 计算机算法设计与分析读后感,算法设计与分析基础经典读后感有感
<算法设计与分析基础>是一本由Anany levitin著作,清华大学出版社出版的胶版纸图书,本书定价:49.00元,页数:409,特精心从网络上整理的一些读者的读后感,希望对大家能有帮助 ...
- 算法设计与分析基础-笔记-上
算法设计与分析基础 绪论 什么是算法 一系列解决问题的明确指令,对于符合一定规范的输入,能够在有限的时间内获得要求的输出. 例子:最大公约数:俩个不全为0 的非负整数 m m m和 n n n的最大公 ...
- 算法设计与分析基础知识
一.算法设计基础 算法是(algorithm)是对特定问题求解步骤的一种描述,是指令的有限序列. 算法的五个特性: 输入:一个算法可以有零个或多个输入. 输出:一个算法有一个输出或多个输出. 有穷性( ...
- 算法设计与分析基础 第一章谜题
习题1.1 10.b 欧几里得游戏 一开始,板上写有两个不相等的正整数,两个玩家交替写数字,每一次,当前玩家都必须在板上写出任意两个板上数字的差,而且这两个数字必须是新的,也就是说,不能与板上任何一个 ...
- 算法设计与分析基础知识点
前言:全文参考徐承志老师的PPT 适合期末复习,查缺补漏,有缺漏或错误欢迎指正,后面的第九章内容之后会继续补充. 目录 一.算法基础概念 二.算法分析基础 1.概念 2.算法设计的一般过程 3.时间复 ...
- 算法设计与分析基础第三版
课后题答案 一.算法级基础知识 1.算法的基本概念 解决问题的确定方法和有限步骤称为算法,对于计算机科学来说,算法指的是对特定问题的求解步骤的一种描述,是若干条指令的有穷序列.并有以下特性:输入.输出 ...
最新文章
- 串的顺序存储结构c语言版,数据结构C语言版串的定长顺序存储表示和实现.doc
- FileDown.cs(20170223)
- Android输入输出机制之来龙去脉之前生后世
- 使用Oracle UTL_FILE包操作文件
- 在javascript当中发现了一个没有调用者的方法。
- web前端开发最佳实践--(笔记之JavaScript最佳实践)
- 明天 | 2021单细胞组学国际研讨会(线上)【附直播链接】
- 浅谈长连接的平滑重启
- jfinal项目tomcat下部署
- opencv之使用floodfill填充孔洞
- JDK_API官方标准中文版(希望对大家有用)
- 推荐 7 个神级 Java 开源项目
- 数学物理计算机的思考
- VS(Visual Studio2017)快速入门基础操作(运行结果一闪而过,找不到解决方案资源管理器)
- K8S-Kubeadm的安装及原理
- 推荐|10 款好用的远程管理工具
- 【蓝桥杯经典数学题】杨辉三角形
- 为什么OpenCV4 “pkg-config --modversion opencv”显示“ No package ‘opencv‘ found”?解决方法!
- 没有实习经验的应届生如何找到一份数据分析类工作?
- 文件太大notepad 打不开怎么办
热门文章
- 什么是 P、PE、CE ?
- 「数据架构」介绍下一代主数据管理(MDM)
- 管理者,最重要的100句话
- 俄罗斯 搜索引擎 邮箱创建
- 河北软件职业技术学院计算机专业在哪个校区,河北软件职业技术学院有几个校区,哪个校区最好及各校区介绍...
- v-for报错Cannot use v-for on stateful component root element because it renders multiple elements.
- 团队管理——情绪价值
- Tensorflow图像识别-2
- 使用Windows Server 2003实现高可用故障转移群集(1)
- Word文件打开之后有只读限制