• 算法与程序设计
21年品牌 40万+商家 超1.5亿件商品

算法与程序设计

正版保障 假一赔十 可开发票

40.19 6.7折 59.8 全新

库存5件

广东广州
认证卖家担保交易快速发货售后保障

作者杨建英

出版社电子工业出版社

ISBN9787121438950

出版时间2021-04

装帧平装

开本16开

定价59.8元

货号11680800

上书时间2024-12-22

灵感书店

三年老店
已实名 已认证 进店 收藏店铺

   商品详情   

品相描述:全新
商品描述
目录
第1章算法与程序设计简介1

 1.1初识算法1

 1.1.1算法的基本概念2

 1.1.2算法的描述4

 1.1.3算法设计的步骤7

 1.1.4算法的分类8

 1.2算法复杂度分析9

 1.2.1时间复杂度9

 1.2.2空间复杂度14

 1.2.3算法设计实例15

 1.3程序设计简介17

 1.3.1算法与程序18

 1.3.2结构化程序设计19

 1.3.3结构化程序设计实例20

 习题21

 第2章穷举法23

 2.1穷举法概述23

 2.1.1穷举法的基本思想23

 2.1.2穷举法的实施步骤与算法描述23

 2.2整数搜索25

 2.2.1算24点游戏25

 2.2.2韩信点兵27

 2.2.3素数问题28

 2.2.4约瑟夫环问题29

 2.2.5火柴棒等式30

 2.2.6三色旗问题31

 2.2.7勾股数问题32

 2.2.8猜价格游戏33

 2.3分解与重组35

 2.3.1水仙花数35

 2.3.2回文数35

 2.3.3完数36

 2.4趣味数学37

 2.4.1百钱买百鸡问题37

 2.4.2搬砖问题38

 2.4.3鸡兔同笼问题38

 2.4.4数学灯谜39

 2.5解方程与不等式40

 2.5.1解二元一次方程40

 2.5.2解完美立方式40

 2.5.3解一元二次不等式41

 2.6数阵与图形42

 2.6.1杨辉三角形42

 2.6.2输出各种图形43

 2.7穷举设计的优化45

 习题47

 第3章递推法48

 3.1递推法概述48

 3.1.1递推法的基本思想48

 3.1.2递推法的实施步骤与算法描述49

 3.2递推数列51

 3.2.1斐波那契数列和卢卡斯数列51

 3.2.2分数数列53

 3.2.3幂序列53

 3.2.4双关系递推数列54

 3.2.5储油点问题56

 3.3递推数阵57

 3.3.1累加和57

 3.3.2阶乘问题58

 3.3.3九九乘法表58

 3.4递推的其他应用59

 3.4.1猴子爬山问题59

 3.4.2整币兑零问题60

 3.4.3整数划分问题61

 3.4.4汉诺塔问题61

 3.4.5体重指数BMI62

 3.4.6求π的近似值63

 3.4.7求一元二次方程的根63

 3.4.8求三角形的面积64

 3.4.9存钱问题65

 3.4.10求优选公约数和最小公倍数66

 习题67

 第4章回溯法68

 4.1回溯法概述68

 4.1.1回溯法的基本思想68

 4.1.2回溯法的实施步骤和算法描述69

 4.2回溯法的应用70

 4.2.1八皇后问题70

 4.2.2图的着色问题71

 4.2.3装载问题73

 4.2.4批处理作业调度75

 4.2.5符号三角形问题77

 4.2.6优选团问题78

 4.2.7旅行售货员问题80

 4.2.8电路板排列问题82

 4.2.9连续邮资问题84

 4.2.10圆排列问题86

 4.2.11桥本分数式88

 4.2.12素数环89

 4.2.13神奇古尺91

 4.3回溯设计的优化92

 习题93

 第5章分支限界法94

 5.1分支限界法概述94

 5.1.1分支限界法的基本思想94

 5.1.2分支限界法的实施步骤和算法描述94

 5.2分支限界法的应用95

 5.2.1迷宫问题95

 5.2.2六数码问题98

 5.2.3旅行商问题101

 5.2.4背包问题104

 5.3回溯法与分支限界法的比较108

 习题109

 第6章递归法110

 6.1递归法概述110

 6.1.1递归法的基本思想110

 6.1.2递归法的实施步骤和算法描述110

 6.2递归法的应用111

 6.2.1整数划分问题111

 6.2.2汉诺塔问题112

 6.2.3枚举排列问题113

 6.2.4用递归法求斐波那契数列114

 6.2.5排队买票问题115

 6.2.6猴子吃桃子问题116

 6.2.7RPG涂色问题117

 6.2.8二叉树的遍历118

 6.3回溯法与递归法的比较120

 习题120

 第7章分治法121

 7.1分治法概述121

 7.1.1分治法的基本思想121

 7.1.2分治法的实施步骤和算法描述122

 7.2分治法的应用123

 7.2.1二分查找法123

 7.2.2大整数乘法125

 7.2.3斯特拉森矩阵乘法127

 7.2.4棋盘覆盖问题128

 7.2.5合并排序129

 7.2.6快速排序132

 7.2.7线性时间选择133

 7.2.8最近点对问题136

 7.2.9循环赛日程表137

 7.3递归转化139

 7.3.1一般的递归转非递归139

 7.3.2分治法中的递归转化141

 习题143

 第8章贪心算法145

 8.1贪心算法概述145

 8.1.1贪心算法的基本思想145

 8.1.2贪心算法的实施步骤与算法描述145

 8.2活动安排问题146

 8.3田忌赛马148

 8.4背包问题149

 8.5覆盖问题151

 8.5.1区间覆盖问题151

 8.5.2优选不相交覆盖151

 8.5.3点覆盖151

 8.6教室调度问题153

 8.7最小生成树――Kruskal算法155

 8.8最小生成树――Prim算法157

 8.9哈夫曼编码160

 8.10教室分配问题164

 8.11最短路径――弗洛伊德算法166

 8.12最短路径――迪杰斯德拉算法169

 8.13均分纸牌172

 8.14很好浏览路线问题173

 8.15机器调度问题175

 8.16钱币找零问题176

 习题177

 第9章动态规划法178

 9.1动态规划法概述178

 9.1.1动态规划法的基本思想178

 9.1.2动态规划法的实施步骤与算法描述179

 9.2装载问题180

 9.3投资分配问题181

 9.4背包问题185

 9.4.10-1背包问题185

 9.4.2二维0-1背包问题187

 9.5最长子序列探索188

 9.5.1最长非降子序列188

 9.5.2最长公共子序列(LongestCommonSubsequence,LCS)190

 9.6很优路径搜索192

 9.6.1数字三角形优选路径和192

 9.6.2多源最短路径问题194

 9.6.3走方格问题197

 9.6.4邮资问题198

 9.7动态规划与其他算法的比较199

 习题200

 第10章随机算法201

 10.1随机算法概述201

 10.2随机数201

 10.2.1随机生成数组元素202

 10.2.2随机生成数字204

 10.2.3随机生成计算题206

 10.3同余算法208

 10.4舍伍德算法209

 10.5蒙特卡罗算法211

 10.5.1用蒙特卡罗算法求π的值211

 10.5.2用蒙特卡罗算法求特殊图形的面积212

 10.5.3蒙特卡罗算法的优缺点及改进措施213

 10.6拉斯维加斯算法214

 10.7蒙特卡罗算法和拉斯维加斯算法的比较217

 10.8随机算法的优缺点217

 习题217

 附录A不同算法的比较219

 参考文献221

内容摘要

第1章算法与程序设计简介

1.1初识算法

算法(Algorithm)是指解题方案的准确而完整的描述,是一系列解决问题的清晰指令。算法代表着用系统的方法描述解决问题的策略机制,也就是说,能够对一定规范的输入,在有限时间内获得所要求的输出。如果一个算法有缺陷或不适合于某个问题,执行这个算法将不会解决该问题。不同的算法可能用不同的时间、空间或效率来完成同样的任务。一个算法的优劣可以用空间复杂度与时间复杂度来衡量。

算法中的指令描述的是一个计算,当其运行时,能从一个初始状态和(可能为空的)初始输入开始,经过一系列有限而清晰定义的状态,最终产生输出并停止于一个终态。一个状态到另一个状态的转移不一定是确定的。

在生活中,算法就是解决问题的步骤。例如,制作麻辣香锅的菜谱,会把制作麻辣香锅所必需的材料及用量都标注清楚,并且把烹制的过程、每一步需要的时间等都详细记录下来。只要完全按照菜谱的方法和步骤去做,就一定能烹制出美味的麻辣香锅。而算法就是能让程序员编写出可靠、高效的计算机程序的“菜谱”(如图1-1所示)。

编程的目的是让计算机解决特定的问题,编程之前首先需要明确计算机解决该问题的具体步骤,这个处理步骤就是编写该程序所需要的算法。解决一个问题可以用不同的方法和步骤,因而针对同一问题的算法也有多种多样的。例如,求1+2+3+…+100的和,有如图1-2所示的两种算法。

而编写程序就是通过某一种程序设计语言(比如C语言、Java语言)对算法的具体实现。算法独立于任何程序设计语言,同一算法可以用不同的程序设计语言来实现(如图1-3所示)。

1.1.1算法的基本概念

算法是解决问题的步骤,可以把算法定义成解决确定类问题的任意一种特殊的方法。在计算机科学中,算法要用计算机算法语言描述,算法代表用计算机解决同一类问题的精确、有效的方法。算法+数据结构=程序,求解一个给定的可计算或可解的问题,不同的人可以编写出不同的程序。解决同一个问题,我们会从两方面来考虑:一是与计算方法密切相关的算法问题(逻辑实现);二是程序设计问题(物理实现)。算法和程序之间存在密切的关系。

1.算法的基本特征

(1)可行性(Effectiveness)

可行性是指算法中执行的任何计算步骤都可以被分解为基本的可执行的操作步,即每个计算步都可以在有限时间内完成(也称为有效性),简单地说就是:按着这个算法,是可以得出结果的,这种方法是可行的。

例如,若某计算工具具有7位有效数字,设A=1012,B=1,C=-1012,则A+B+C=0,A+C+B=1。所以,在设计一个算法的时候必须考虑可行性。

……



精彩内容
本书遵循“精选案例,面向设计,深入浅出,注重能力培养”的要求,以案例形式实现算法与程序设计教学,精选了穷举法、递推法、回溯法、分支限界法、递归法、分治法、贪心算法、动态规划法和随机算法等常用算法进行讲解,并给出了使用各算法求解的典型案例。对于每一个案例的求解,从问题提出到算法设计、从程序实现到算法复杂度分析,环环相扣,融为一体,力求理论与实际相结合、算法与程序相统一,突出算法在解决实际问题中的核心地位与引导作用。本书中的所有案例均给出算法设计要点与完整的C语言或者C++语言程序代码(均在VC++6.0上编译通过)。为方便教学,每章都附有习题,同时提供教学课件、习题答案、源代码等配套资源,读者可登录华信教育资源网(www.hxedu.com.cn)免费下载使用。本书既可作为高等院校计算机专业相关课程的教材,也可供IT从业人员和计算机编程爱好者参考使用。

—  没有更多了  —

以下为对购买帮助不大的评价

此功能需要访问孔网APP才能使用
暂时不用
打开孔网APP