内容简介
算法是程序设计的灵魂,代表着用系统的方法描述解决问题的策略与机制。《算法基础与在线实践/北京大学“程序设计与算法”专项课程系列教材》将介绍简单模拟、枚举、递归、二分、贪心、动态规划和搜索等经典算法,带领读者体会它们巧妙的构思,感受利用它们解决问题的独特魅力。《算法基础与在线实践/北京大学“程序设计与算法”专项课程系列教材》不仅讲解这些算法的基本原理思想,还通过具体例题对这些算法进行灵活、有效的展开和准确实现。《算法基础与在线实践/北京大学“程序设计与算法”专项课程系列教材》中涉及的编程任务将充分训练读者的思维能力和动手能力,促成全面、缜密思考问题的习惯。
《算法基础与在线实践/北京大学“程序设计与算法”专项课程系列教材》可作为高等学校计算机等相关专业算法设计类课程的教材,也可供对算法设计、程序设计竞赛感兴趣的读者自学使用。
作者简介
刘家瑛,博士,北京大学计算机科学技术研究所副教授。2010年6月毕业于北京大学计算机应用技术专业,获理学博士学位。2007-2008年。赴美国南加州大学多媒体通信实验室任访问学者。2015年.受铸星计划支持于微软亚洲研究院担任访问研究员。研究领域包括图像,视频表示、压缩与增强重建、计算机视觉与理解等。在国际重要期刊和会议上发表学术论文近80篇,申请国家发明专利40多项。其中13项已获得授权。曾获得“北京大学青年教师教学基本功比赛”一等奖、教学信息化先进个人、北京大学教学优秀奖。
郭炜,本科毕业于中国科学技术大学计算机系,硕士毕业于北京大学计算机科学技术系.现为北京大学信息科学技术学院教师。担任北京大学ACM国际大学生程序设计竞赛队教练12年.从2008年至今,为ACM国际大学生程序设计竞赛亚洲区赛站命题十余场。北京角斗士软件技术有限公司创始人,开发《我爱背单词》等多款成功的商业软件。兼具丰富的教学经验和软件开发实践经验。
李文新,北京大学博士,香港理工大学博士.现任北京大学信息科学技术学院教授、副院长,北京大学计算机实验教学中心主任。中国计算机学会人工智能与模式识别专委会委员。主要研究领域为人工智能、生物特征识别技术,是国际上*早从事自动化掌纹识别的研究者之一。曾担任信息学奥赛科学委员会副主席。北京市科协青少年科技教育协会副理事长、ACM/ICPC国际大学生程序设计竞赛亚洲区教练及竞赛指导委员会委员、北京大学ACM竞赛代表队领队。为推动ACM竞赛在北京大学、中国乃至亚洲的普及做了大量工作。2006年、2010年获ACM/ICPC组织颁发的“区域发展杰出贡献奖”。2016年获ACM/ICPC组织颁发的“亚洲领导力”奖。由她组织为训练ACM队员而开发的北京大学在线程序评测系统(http://openjudge.cn)目前已成为国际*有影响力的同类网站之一。
内页插图
目录
第1章 绪论
1.1 什么是算法
1.2 算法的时间复杂度
1.3 算法时间复杂度分析示例
1.4 PKU 0penJudge在线评测系统
1.5 本章小结
第2章 简单计算与模拟
2.1 基本思想
2.2 例题:鸡兔同笼(POJ 3237)
2.3 例题:校门外的树(POJ 2808)
2.4 例题:装箱问题(POJ 1017)
2.5 例题:约瑟夫问题(POJ 2746)
2.6 例题:显示器(POJ 2745)
2.7 例题:排列(POJ 1833)
2.8 本章小结
2.9 练习题
习题2-1:与7无关的数(POJ 2701)
习题2-2:细菌繁殖(POJ 2712)
习题2-3:判断闰年(POJ 2733)
习题2-4:求一兀二次方程的根(PoJ 2707)
习题2-5:合唱队形(POJ 2711)
第3章 枚举
3.1 基本思想
3.2 例题:假币问题(POJ 2692)
3.3 例题:生理周期(POJ 4148)
3.4 例题:完美立方(POJ 2810)
3.5 例题:熄灯问题(POJ 2811)
3.6 例题:讨厌的青蛙(POJ 2812)
3.7 本章小结
3.8 练习题
习题3-1:数字三元组(POJ 4146)
习题3-2:质数的和与积(POJ 4138)
习题3-3:不定方程求解(POJ 4139)
习题3-4:砝码称重(POJ 4141)
习题3-5:垃圾炸弹(POJ 4133)
第4章 递归
4.1 基本思想
4.2 例题:汉诺塔问题
4.3 例题:小游戏(POJ 2802)
4.4 例题:棋盘分割(POJ 1191)
4.5 例题:八皇后问题(POJ 2754)
4.6 例题:文件结构“图”(POJ 2775)
4.7 例题:算24(POJ 2787)
4.8 例题:汉诺塔问题利用栈替代递归的解法
4.9 本章小结
4.10 练习题
习题4-1:斐波那契数列(POJ 2753)
习题4-2:求最大公约数问题(POJ 3248)
习题4-3:分解因数(POJ 2749)
习题4-4:逆波兰表达式(POJ 2694)
习题4-5:括号匹配问题(POJ 3704)
第5章 二分查找
5.1 基本思想
5.2 例题:方程求解(POJ 4140)
5.3 例题:在线翻译(POJ 2503)
5.4 例题:快速找到和为零的四个数(POJ 3441)
5.5 例题:疯牛(POJ 2456)
5.6 例题:弯曲的木杆(POJ 1905)
5.7 例题:放弃考试(POJ 4145)
5.8 本章小结
5.9 练习题
习题5-1:查找最接近的元素(PoJ 4134)
习题5-2:二分法求函数的零点(POJ 4142)
习题5-3:和为给定数(POJ 4143)
习题5-4:月度开销(POJ 4135)
习题5-5:矩形分割(PoJ 4136)
第6章 贪心算法
6.1 基本思想
6.2 例题:圣诞老人的礼物(POJ 4110)
6.3 例题:电池的寿命(POJ 3468)
6.4 例题:建立雷达(POJ 1328)
6.5 例题:田忌赛马(POJ 2287)
6.6 例题:钓鱼(POJ 1042)
6.7 例题:畜栏保留问题(POJ 4144)
6.8 本章小结
6.9 练习题
习题6-1:金银岛(POJ 2795)
习题6-2:最短前缀(POJ 2797)
习题6-3:书架(POJ 3406)
习题6-4:最小新整数(POJ 4137)
习题6-5:拼点游戏(POJ 4005)
第7章 动态规划
7.1 基本思想
7.2 动态规划解题的一般思路
7.3 例题:最长上升子序列(POJ 2533)
7.4 例题:最长公共子序列(POJ 1458)
7.5 例题:CIlarm Bracelet(POJ 4131)
7.6 例题:滑雪(POJ 1088)
7.7 例题:灌溉草场(POJ 2373)
7.8 例题:方盒游戏(POJ 1390)
7.9 例题:美妙栅栏(POJ 1037)
7.10 本章小结
7.11 练习题
习题7-1:简单的整数划分问题(POJ 4117)
习题7-2:开餐馆(POJ 4118)
习题7-3:复杂的整数划分问题(PoJ 4119)
习题7-4:硬币(POJ 4120)
习题7-5:宠物小精灵之收服(POJ 4102)
习题7-6:股票买卖(POJ 4121)
习题7-7:切割回文(POJ 4122)
第8章 深度优先搜索
8.1 基本思想
8.2 例题:城堡问题(POJ 2815)
8.3 例题:ROADS(POJ 1724)
8.4 例题:生日蛋糕(POJ 1190)
8.5 例题:sticks(POJ 1011)
8.6 本章小结
8.7 练习题
习题8-1:踩方格(POJ 4103)
习题8-2:棋盘问题(POJl321)
习题8-3:马走日(POJ 4123)
习题8-4:海贼王之伟大航路(PoJ 4124)
习题8-5:DNA(POJ 4126)
第9章 广度优先搜索
9.1 基本思想
9.2 例题:Catch That cow(POJ 4001)
9.3 例题:拯救行动(POJ 4116)
9.4 例题:鸣人和佐助(POJ 4115)
9.5 例题:八数码(POJ 1077)
9.6 双向广度优先搜索
9.7 本章小结
9.8 练习题
习题9-1:迷宫问题(POJ 4127)
习题9-2:单词序列(POJ 4128)
习题9-3:变换的迷宫(POJ 4129)
习题9-4:Flip Game(POJ 1753)
习题9-5:SavingTang Monk(POJ 4130)
习题9-6:Jack and Jill(POJ 1729)
前言/序言
计算机学科是实践性学科,通过编程解决实际工作生活中的问题是该学科的基础,也是训练计算机相关专业学生的基本技能。编写优雅的程序不仅是指熟练运用程序设计语言,更是利用设计精巧的算法高效地解决实际问题。
使用计算机程序解决实际问题,首先要能够将一个具体问题抽象成一个可计算的问题或模型,并设计出一套可行的计算过程。这个构建计算的过程,其实对应的就是算法设计。简捷、高效的算法是计算机科学的核心和精髓。使用算法进行问题求解的例子存在于生活中的方方面面,既可以简单有效,例如最常见的学生成绩信息管理系统、数字排序算法等;也可以非常复杂,例如Google公司旗下的DeepMind公司为AlaphG0程序研发的基于深度学习的人工智能算法等。
算法的本质是取一组值作为输入,经过一系列计算步骤,产生符合要求的输出结果。对于排序算法,输入就是待排序的若干个数,输出就是排好序的数列。对于指纹比对算法,输入就是两个指纹的图像数据,输出就是一个表示相似程度的数值。对于AlaphGo的算法,输入就是一个棋局的描述(棋盘上所有棋子的位置),输出就是一个坐标,即落子位置。实际上,算法所研究的不仅是如何得到正确的结果,更重要的是如何尽可能快速地得到正确的结果。试想如果AlaphGo下一步棋要计算一天,那李世石还会愿意与它比赛吗?
算法设计又体现出一种计算思维的思想。编写程序的目的是为了将算法思想变为计算机能够执行的指令序列。算法运用不好的程序员,很难说是一个好程序员。作为计算机专业人才,理应具有一定的算法功底,并且应该具备将算法准确实现为程序的能力。因此本书特别强调编程实践,通过具体的例题、样例程序来讲解算法设计的思路和具体实现,并配有大量的课后习题以供练习。本书的作者均在北京大学信息科学技术学院多年讲授计算机专业主干课程“程序设计实习”(通常为本科生第二学期必修课程),课程中长期积累、精挑细选的例题和习题构成了本书的主要内容。
本书从最简单的算法入手,依次讲述了模拟、枚举、递归、二分查找、贪心算法、动态规划和搜索的基本思想,步步深入,系统地对基础算法进行全面的讲述,并在各章节辅以大量例题对相关算法内容进行有效的补充和深入。通过全面的设计思路分析与详细的程序设计描述展示,有效地促进学生全面、细致地思考问题,提高编程的准确性,增强程序查错、调试的能力。通过训练,学生能够打下较为坚实的程序设计基础,为进一步学习其他计算机专业课程,或在其他专业领域运用计算机编程解决问题创造良好的条件。
算法基础与在线实践/北京大学“程序设计与算法”专项课程系列教材 [Fundamentals of Programming and Algorithms] 下载 mobi epub pdf txt 电子书 格式
算法基础与在线实践/北京大学“程序设计与算法”专项课程系列教材 [Fundamentals of Programming and Algorithms] 下载 mobi pdf epub txt 电子书 格式 2024
评分
☆☆☆☆☆
帮同事买的,很满意。
评分
☆☆☆☆☆
不错
评分
☆☆☆☆☆
希望会有时间去看。。。
评分
☆☆☆☆☆
好!!!!!!!!!!!!!!!!!!!!!!!!!!!!
评分
☆☆☆☆☆
好!!!!!!!!!!!!!!!!!!!!!!!!!!!!
评分
☆☆☆☆☆
书皮有点zang了,不过不影响使用,心里还是有点不开心。喜欢京东,京东加油
评分
☆☆☆☆☆
希望会有时间去看。。。
评分
☆☆☆☆☆
送货很快,包装也很好,非常满意!
评分
☆☆☆☆☆
书皮有点zang了,不过不影响使用,心里还是有点不开心。喜欢京东,京东加油
算法基础与在线实践/北京大学“程序设计与算法”专项课程系列教材 [Fundamentals of Programming and Algorithms] mobi epub pdf txt 电子书 格式下载 2024