
编辑推荐
《北京大学"程序设计与算法"专项课程系列教材:算法基础与在线实践》可作为高等学校计算机等相关专业算法设计类课程的教材,也可供对算法设计、程序设计竞赛感兴趣的读者自学使用。
作者简介
刘家瑛,博士,北京大学计算机科学技术研究所副教授。2010年6月毕业于北京大学计算机应用技术专业,获理学博士学位。2007—2008年,赴美国南加州大学多媒体通信实验室任访问学者。2015年,受铸星计划支持于微软亚洲研究院担任访问研究员。研究领域包括图像/视频表示、压缩与增强重建、计算机视觉与理解等。在国际重要期刊和会议上发表学术论文近80篇,申请国家发明专利40多项,其中13项已获得授权。曾获得“北京大学青年教师教学基本功比赛”一等奖、教学信息化先进个人、北京大学教学优秀奖。
郭炜,本科毕业于中国科学技术大学计算机系,硕士毕业于北京大学计算机科学技术系,现为北京大学信息科学技术学院教师。担任北京大学ACM国际大学生程序设计竞赛队教练12年,从2008年至今,为ACM国际大学生程序设计竞赛亚洲区赛站命题十余场。北京角斗士软件技术有限公司创始人,开发《我爱背单词》等多款成功的商业软件。兼具丰富的教学经验和软件开发实践经验。
李文新,北京大学博士,香港理工大学博士,现任北京大学信息科学技术学院教授、副院长,北京大学计算机实验教学中心主任,中国计算机学会人工智能与模式识别专委会委员。主要研究领域为人工智能、生物特征识别技术,是国际上最早从事自动化掌纹识别的研究者之一。曾担任信息学奥赛科学委员会副主席,北京市科协青少年科技教育协会副理事长、ACM/ICPC国际大学生程序设计竞赛亚洲区教练及竞赛指导委员会委员、北京大学ACM竞赛代表队领队。为推动ACM竞赛在北京大学、中国乃至亚洲的普及做了大量工作。2006年、2010年获ACM/ICPC组织颁发的“区域发展杰出贡献奖”。2016年获ACM/ICPC组织颁发的“亚洲领导力”奖。由她组织为训练ACM队员而开发的北京大学在线程序评测系统目前已成为国际最有影响力的同类网站之一。
目录
第1章绪论
1.1什么是算法
1.2算法的时间复杂度
1.3算法时间复杂度分析示例
1.4PKU Openjudge在线评测系统
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 2)
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 5)
第7章动态规划
7.1基本思想
7.2动态规划解题的一般思路
7.3例题:最长上升子序列(POJ 2533)
7.4例题:最长公共子序列(POJ 1458)
7.5例题:Charm 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:棋盘问题(POJ 1321)
习题8—3:马走日(POJ 4123)
习题8—4:海贼王之伟大航路(POJ 4124)
习题8—5:DNA(POJ 4126)
第9章广度优先搜索
9.1基本思想
9.2例题:Catch That Cow( POJ 1)
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: Saving Tang Monk(POJ 4130)
习题9—6: Jack and Jill(POJ 1729)
文摘
版权页:
插图:
枚举必然是在一个有限的范围内进行的,所以枚举每一层的蛋糕的高度和半径时,高度和半径必然有一个上限。
搜索的时候还要讲究顺序,不同的顺序会导致搜索快慢的天壤之别。关于搜索顺序,可以考虑一个生活中的例子:如果要用七巧板拼出一个指定的形状,会考虑先试图摆放大块的板子还是小块的板子?从经验来看,应该先摆大块的板子,因为大块板子摆放的可能方式比小块板子要少。小块板子容易找到各种合适的位置摆放,大块板子则不容易。由此经验可以总结出,如果一件事情由n个步骤组成(顺序无关),每个步骤都有多种选择,那么在试着完成这件事情时,应该先试选择少的步骤,后试选择多的步骤。
具体到本题,搜索顺序实际上就是问:搭一个蛋糕的时候,是从底向上搭,还是从顶向下搭。由于蛋糕的总体积固定,而越往下层的体积越大(即选择越少),所以应该从底往上搭。
《北京大学"程序设计与算法"专项课程系列教材:算法基础与在线实践》可作为高等学校计算机等相关专业算法设计类课程的教材,也可供对算法设计、程序设计竞赛感兴趣的读者自学使用。
作者简介
刘家瑛,博士,北京大学计算机科学技术研究所副教授。2010年6月毕业于北京大学计算机应用技术专业,获理学博士学位。2007—2008年,赴美国南加州大学多媒体通信实验室任访问学者。2015年,受铸星计划支持于微软亚洲研究院担任访问研究员。研究领域包括图像/视频表示、压缩与增强重建、计算机视觉与理解等。在国际重要期刊和会议上发表学术论文近80篇,申请国家发明专利40多项,其中13项已获得授权。曾获得“北京大学青年教师教学基本功比赛”一等奖、教学信息化先进个人、北京大学教学优秀奖。
郭炜,本科毕业于中国科学技术大学计算机系,硕士毕业于北京大学计算机科学技术系,现为北京大学信息科学技术学院教师。担任北京大学ACM国际大学生程序设计竞赛队教练12年,从2008年至今,为ACM国际大学生程序设计竞赛亚洲区赛站命题十余场。北京角斗士软件技术有限公司创始人,开发《我爱背单词》等多款成功的商业软件。兼具丰富的教学经验和软件开发实践经验。
李文新,北京大学博士,香港理工大学博士,现任北京大学信息科学技术学院教授、副院长,北京大学计算机实验教学中心主任,中国计算机学会人工智能与模式识别专委会委员。主要研究领域为人工智能、生物特征识别技术,是国际上最早从事自动化掌纹识别的研究者之一。曾担任信息学奥赛科学委员会副主席,北京市科协青少年科技教育协会副理事长、ACM/ICPC国际大学生程序设计竞赛亚洲区教练及竞赛指导委员会委员、北京大学ACM竞赛代表队领队。为推动ACM竞赛在北京大学、中国乃至亚洲的普及做了大量工作。2006年、2010年获ACM/ICPC组织颁发的“区域发展杰出贡献奖”。2016年获ACM/ICPC组织颁发的“亚洲领导力”奖。由她组织为训练ACM队员而开发的北京大学在线程序评测系统目前已成为国际最有影响力的同类网站之一。
目录
第1章绪论
1.1什么是算法
1.2算法的时间复杂度
1.3算法时间复杂度分析示例
1.4PKU Openjudge在线评测系统
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 2)
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 5)
第7章动态规划
7.1基本思想
7.2动态规划解题的一般思路
7.3例题:最长上升子序列(POJ 2533)
7.4例题:最长公共子序列(POJ 1458)
7.5例题:Charm 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:棋盘问题(POJ 1321)
习题8—3:马走日(POJ 4123)
习题8—4:海贼王之伟大航路(POJ 4124)
习题8—5:DNA(POJ 4126)
第9章广度优先搜索
9.1基本思想
9.2例题:Catch That Cow( POJ 1)
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: Saving Tang Monk(POJ 4130)
习题9—6: Jack and Jill(POJ 1729)
文摘
版权页:
插图:
枚举必然是在一个有限的范围内进行的,所以枚举每一层的蛋糕的高度和半径时,高度和半径必然有一个上限。
搜索的时候还要讲究顺序,不同的顺序会导致搜索快慢的天壤之别。关于搜索顺序,可以考虑一个生活中的例子:如果要用七巧板拼出一个指定的形状,会考虑先试图摆放大块的板子还是小块的板子?从经验来看,应该先摆大块的板子,因为大块板子摆放的可能方式比小块板子要少。小块板子容易找到各种合适的位置摆放,大块板子则不容易。由此经验可以总结出,如果一件事情由n个步骤组成(顺序无关),每个步骤都有多种选择,那么在试着完成这件事情时,应该先试选择少的步骤,后试选择多的步骤。
具体到本题,搜索顺序实际上就是问:搭一个蛋糕的时候,是从底向上搭,还是从顶向下搭。由于蛋糕的总体积固定,而越往下层的体积越大(即选择越少),所以应该从底往上搭。
ISBN | 9787040473001 |
---|---|
出版社 | 高等教育出版社 |
作者 | 刘家瑛 |
尺寸 | 16 |