华信教育资源网
算法与程序设计
丛   书   名: 国家级一流本科专业精品教材  新工科建设之路•计算机类专业系列教材
作   译   者:杨建英 出 版 日 期:2022-08-01
出   版   社:电子工业出版社 维   护   人:牛晓丽 
书   代   号:G0438950 I S B N:9787121438950
定价 59.8
您的专属联系人更多
关注 评论(0) 分享
配套资源 图书内容 样章/电子教材 图书评价
  • 配 套 资 源
  • 图 书 内 容

    内容简介

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

    图书详情

    ISBN:9787121438950
    开 本:16(185*260)
    页 数:232
    字 数:459

    本书目录

    第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 体重指数BMI	62
    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.7 RPG涂色问题	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.1 0-1背包问题	185
    9.4.2 二维0-1背包问题	187
    9.5 最长子序列探索	188
    9.5.1 最长非降子序列	188
    9.5.2 最长公共子序列(Longest Common Subsequence,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
    
    展开

    前     言

    算法与程序设计是计算机科学的核心,也是大学计算机相关专业的一门重要的专业基础课。算法是程序的灵魂,程序设计是算法的具体实现。本书以解决问题和程序设计为主线,深入浅出地讲解了计算机程序设计的常用算法—穷举法、递推法、回溯法、分支限界法、递归法、分治法、贪心算法、动态规划法和随机算法等,囊括了国内外的经典算法问题,用C语言和C++语言揭示利用计算机解决问题的全过程。
    本书遵循“精选案例,面向设计,深入浅出,注重能力培养”的宗旨编写,在常用算法应用案例的选取与深度的把握上、在算法理论与案例求解的结合上进行精心设计,力图适应高校计算机本科教学目标与知识结构的要求,体现以下5个特色。
    (1)采用“案例式”教学实现算法与程序设计的完美结合。
    算法与程序设计课程的目标是培养学生由“数学思维”向“计算思维”转变,提高学生应用算法与程序设计解决实际问题的能力。本书通过典型案例引导算法设计的逐步深入,展开程序设计的求解实施,形成以典型案例支撑算法、以算法设计指导案例求解的良性循环。从案例的提出、算法设计与描述、程序设计与实现,到案例结果的讨论与优化,充分培养学生从算法(理论)到程序设计(实践)的应用能力。
    (2)注重常用算法的选取与组织。
    本书在介绍算法的基本理论与设计思路基础上,从解决实际案例入手,讲述算法中要求本科学生掌握的基本思路、设计内容与实施步骤,避免学生出现眼高手低、纸上谈兵的现象。
    (3)注重典型案例的精选与提炼。
    本书针对选取的每一种常用算法,精选了初等难度基础型、中等难度应用型、较高难度综合型3种梯度的案例,包括典型的数值求解、常见的数据处理、有趣的智力测试、巧妙的模拟探索,既有新创趣题,也有经典名题,难度适宜,深入浅出。这些案例的精选与提炼,有利于提高学生学习算法与程序设计的兴趣和热情,有利于学生在计算机实际案例求解方面开阔视野,在算法思路的开拓与设计技巧的应用上有一个深层次的锻炼与提高。
    (4)注重算法设计与程序实现的紧密结合。
    算法与程序实际上是一个统一体,不可能也不应该将它们对立与分割。本书在材料的组织上克服了罗列算法多、应用算法设计解决实际问题少、算法与程序设计脱节、算法理论与实际应用脱节的问题,在讲述每一种常用算法的基本思路与设计步骤的基础上,落实到每一个案例求解,从问题提出到算法设计、从程序实现到算法复杂度分析,环环相扣,融为一体,力求理论与实际相结合、算法与程序相统一,突出算法在解决实际问题中的核心地位与引导作用,切实增强学生对所学算法的理解和掌握。
    本书采用功能丰富、应用面广、高校学生使用率最高的C语言或者C++语言描述算法、编写程序,所有程序均在VC++6.0上编译通过。
    (5)注重算法改进与程序优化。
    本书对一些经典案例(如八皇后问题、旅行商问题)应用了多种不同的算法设计,编写了不同表现形式与不同设计风格的程序,体现了算法与程序设计的灵活性和多样性。
    算法改进与程序优化的过程,既是提高解决问题效率的过程,也是提高算法设计能力的过程,更是增强优化意识与创新能力的过程。
    本书既可作为高等院校计算机专业相关课程的教材,也可供IT从业人员和计算机编程爱好者参考使用。
    在本书的编写过程中,山西大学的李雪梅教授、武俊生教授、武湖成老师等给予了多方面的支持与协助,编者在此一并深表感谢。
    因为水平有限、时间紧迫、涉及内容较广,再加上课程改革压力大,尽管每个案例都经反复核实检查、每个程序都经多次运行调试,依然难免有不足和错误的地方,欢迎使用本书的教师、学生和相关爱好者批评指正。编者的电子邮箱是:yangjianying@sxu.edu.cn。
    本书提供丰富的配套资源,可以登录华信教育资源网(www.hxedu.com.cn)或中国高校计算机课程网下载,也可以直接向编者索取。
    
    展开

    作者简介

    杨建英,硕士毕业于华南师范大学人工智能与模糊识别专业,目前在山西大学软件学院任教。山西CCF大会分会委员,山西大学计算机协会指导教师,山西大学软件应用协会指导教师,山西大学ACM-ICPC算法队指导老师,山西大学精英之英竞赛与科技创新团队指导老师。 参与多个国家自然科学基金青年基金项目,荣获山西省科技进步三等奖,“数据库原理与应用”获得山西省精品资源共享课程,出版《Vue.js企业开发实战》《Python快乐编程数据分析与实战》《C语言教程与等级考试》等多部图书。
  • 样 章 试 读
  • 图 书 评 价 我要评论
华信教育资源网