本书主要介绍程序设计算法的基础知识,通过算法问题实践讲解程序设计常用的算法,包括题目描述、题目分析,并给出参考代码。本书可以作为基础语言(C、C++)的后续内容,用于巩固和提高数据结构的相关知识,此外,亦可为软件工程、应用程序开发、网络信息技术、大数据和人工智能等提供算法知识基础。
本书可作为普通高等学校计算机及工科专业教材或从事软件程序设计人员的参考书,也可作为大学生程序设计竞赛的训练指导书。
更多科学出版社服务,请扫码获取。
第1章 程序设计算法概述
1.1 算法实现过程
1.2 算法的特征及评价标准
1.3 算法分析
1.4 算法实践
第2章 基础算法
2.1 枚举法
2.1.1 生理周期(Biorhythms/1006)
2.1.2 立方体(Blocks/2363)
2.1.3 完美立方(Perfect Cubes/1543)
2.1.4 千年虫病毒(Y2K Accounting Bug/2586)
2.1.5 保险箱(Safecracker/1248)
2.1.6 装盒问题(Packets/1017)
2.2 递归法
2.2.1 递归函数(Function Run Fun/1579)
2.2.2 还原二叉树(Tree Recovery/2255)
2.2.3 分形(Fractal/2083)
2.2.4 放苹果(1664)
2.2.5 排列问题(Orders/1731)
2.3 分治法
2.3.1 谁在中间(Who's in the Middle/2388)
2.3.2 排序问题(Ultra-QuickSort/2299)
2.3.3 好斗的牛(Aggressive cows/2456)
2.3.4 分馅饼(Pie/3122)
2.3.5 木杆的膨胀(ExpandingRods/1905)
2.3.6 星形还是树形(A Star not a Tree?/2420)
第3章 基础数据结构
3.1 堆栈
3.1.1 网站导航(Web Navigation/1028)
3.1.2 糟糕的一天(Bad Hair Day/3250)
3.1.3 铁轨问题(Rails/1363)
3.1.4 可怕的集合(Terrible Sets/2082)
3.1.5 数字密码(Code/1780)
3.2 队列
3.2.1 纸牌戏法(Card Trick/3032)
3.2.2 纸牌发牌(Card Stacking/3629)
3.2.3 打印队列(Printer Queue/3125)
3.2.4 成组队列(Team Queue/2259)
3.2.5 滑动窗口(Sliding Window/2823)
3.3 堆
3.3.1 修理栅栏(Fence Repair/3253)
3.3.2 数据流管理系统(Argus/2051)
3.3.3 黑盒问题(BlackBox/1442)
3.3.4 序列问题(Sequence/2442)
3.3.5 财务补助(Moo University-Financial Aid/2010)
第4章 动态规划
4.1 基础动态规划问题
4.1.1 数学三角形(The Triangle/1163/3176)
4.1.2 括号序列(Brackets/2955)
4.1.3 乘法问题(Multiplication Puzzle/1651)
4.1.4 接苹果(Apple Catching/2385)
4.1.5 海明数(Hamming Problem/2545)
4.2 子序列问题
4.2.1 最长有序子序列(Longest Ordered Subsequence/2533)
4.2.2 加工木棍(Wooden Sticks/1065)
4.2.3 士兵列队(Alignment/1836)
4.2.4 求最大和(Maximum surn/2479)
4.2.5 求最大矩阵和(To the Max/1050)
4.3 最长公共子串问题
4.3.1 公共子序列(Common Subsequence/1458)
4.3.2 回文串(Palindrome/1159)
4.3.3 基因功能(Human Gene Functions/1080)
4.3.4 基因重组(AGTC/3356)
4.4 背包问题
4.4.1 幸运手链(Charm Bracelet/3624)
4.4.2 储钱罐(Piggy-Bank/1384)
4.4.3 提款机(Cash Machine/1276)
4.4.4 硬币组合(Coins/1742)
4.5 进阶动态规划问题
4.5.1 策略游戏(Strategic game/1463)
4.5.2 周年纪念聚会(Anniversary party/2342)
4.5.3 玉米田(Corn Fields/3254)
4.5.4 送比萨(Hie with the Pie/3311)
4.5.5 频率值(Frequent values/3368)
第5章 贪心算法
5.1 基础贪心算法问题
5.1.1 生物碰撞(Stripies/1862)
5.1.2 保护花朵(Protecting the Flowers/3262)
5.1.3 田忌赛马(Tian Ji——The Horse Racing/2287)
5.1.4 发补助(Allowance/3040)
5.1.5 超级星星(Super Star/2069)
5.2 区间覆盖问题
5.2.1 不相交区间(Intervals/1089)
5.2.2 雷达安装(Radar Installation/1328)
5.2.3 换班问题(Cleaning Shifts/2376)
第6章 高级数据结构
6.1 并查集
6.1.1 宗教信仰(Ubiquitous Religions/2524)
6.1.2 传染病(The Suspects/1611)
6.1.3 犯罪帮派(Findthem,Catchthem/1703)
6.1.4 堆放立方块(Cube Stacking/1988)
6.2 线段树
6.2.1 乱套的牛(Lost Cows/2182)
6.2.2 平衡阵容(BalancedLineup/3264)
6.2.3 市长的海报(Mayor's posters/2528)
6.2.4 简单整数问题(A Simole Problem with Integers/3468)
6.3 树状数组
6.3.1 星星数量(Stars/2352)
6.3.2 矩阵查询(Matrix/2155)
6.3.3 狂欢节(MooFest/1990)
6.3.4 第K小数(K-th Number/2104)
6.4 二叉搜索树
6.4.1 阔叶树种(Hardwood Species/2418)
6.4.2 双重队列(Double Queue/3481)
6.4.3 喂小狗(Feed the dogs/2761)
6.5 哈希表
6.5.1 宝贝鱼(Babelfish/2503)
6.5.2 雪花(Snowflake/3349)
6.5.3 求和为零(4 Values whose Sum is 0/2785)
6.6 字符串
6.6.1 熵编码(Entropy/1521)
6.6.2 最短前缀(Shorter Prefixes/2001)