仅仅熟练掌握程序设计语言并不能成为好的程序员。对于许多问题,如果没有好的算法,计算机只能低效地解决,甚至无法解决。因此,好的程序员,还应该对程序的灵魂 --- 算法有较好理解并能灵活应用。
本课程要讲授的就是枚举、二分、递归、分治、动态规划、搜索、贪心这七种基本的通用算法。各种复杂算法问题的解决,都可能用到这些基本的思想。
本门课程面向需要进一步提高编程和算法水平的学习者。要求学习者已经掌握C语言,以及基本的程序设计思想,如简单排序、简单的递归。
本课程中一部分的例题,难度与中学信息学奥赛NOIP提高组的较难题相当,也和ACM国际大学生程序设计竞赛中的中等题相当。掌握了本课程的内容,学员的算法水平和实现能力将超过国内大部分高校计算机专业本科毕业生。
本课程作业和考试网址:cxsjsxmooc.openjudge.cn
注意,不要写成 https://cxsjsxmooc.openjudge.cn/, 那样会访问不了!
如果访问不了,就注意浏览器地址栏里面是不是写了 https:// 不能有s!
郭炜老师还在中国大学MOOC开设另外三门好评如潮的4.9分高分课程,请不要错过:
1) 程序设计与算法(一)C语言程序设计(国家精品)
https://www.icourse163.org/course/PKU-1001553023
0基础学习者应该先学习这门课程
2) 程序设计与算法(三)C++面向对象程序设计(国家精品)
https://www.icourse163.org/course/PKU-1002029030
算法基础课中用到了一些面向对象的知识,不明白的可以先看看这门课
3) 实用Python程序设计 (强烈推荐,Python的百科书式大全课程,入门、提高均非常适合!)
为积极响应国家低碳环保政策, 2021年秋季学期开始,中国大学MOOC平台将取消纸质版的认证证书,仅提供电子版的认证证书服务,证书申请方式和流程不变。
电子版认证证书支持查询验证,可通过扫描证书上的二维码进行有效性查询,或者访问 https://www.icourse163.org/verify,通过证书编号进行查询。学生可在“个人中心-证书-查看证书”页面自行下载、打印电子版认证证书。
完成课程教学内容学习和考核,成绩达到课程考核标准的学生(每门课程的考核标准不同,详见课程内的评分标准),具备申请认证证书资格,可在证书申请开放期间(以申请页面显示的时间为准),完成在线付费申请。
认证证书申请注意事项:
1. 根据国家相关法律法规要求,认证证书申请时要求进行实名认证,请保证所提交的实名认证信息真实完整有效。
2. 完成实名认证并支付后,系统将自动生成并发送电子版认证证书。电子版认证证书生成后不支持退费。
1. 熟练掌握C语言
2. 掌握基本的程序设计思想,如简单排序、简单的递归。
3. 有C++语言类和对象的概念,会用C++的 STL
第一章 枚举
1. 枚举的基本思想
2. 例题:生理周期
3. 例题:称硬币
4. 例题:熄灯问题(1)
5. 例题:熄灯问题(2)
第一章讲义
Openjudge在线做题必读
第一章测验
第二章 递归(一)
1. 递归的基本思想
2. 例题2:汉诺塔
3. 例题3: N皇后
4. 例题4:逆波兰表达式求值
第二章讲义
第二章测验
第三章 递归(二)
例题1: 表达式求值
例题2: 上台阶
例题3: 放苹果
例题4: 算24
第三章讲义
第三章测验
第四章 二分算法
1. 程序或算法的时间复杂度
2. 二分查找的原理和实现
3. 二分法求方程的根
4. 例题1 找 一对数
5. 例题2 农夫和奶牛
第四章讲义
第四章测验
第五章 分治
1. 分治的基本思想
2. 快速排序
3. 输出前m大的数
4. 求排列的逆序数
第五章讲义
第五章测验
第六章 动态规划(一)
1. 动态规划的基本思想
2. 例题 数字三角形(2)
3. 动态规划解题一般思路
4. 例题 最长上升子序列
5. 例题 最长公共子序列
6. 例题 最佳加法表达式
第六章讲义
第六章测验
第七章 动态规划(二)
1. 例题1. Help Jimmy
2. 例题2. 滑雪
3. 例题3. 神奇的口袋
4. 例题4. 0-1背包问题
5. 例题5. 分蛋糕
6. 例题6. 灌溉草场
第七章讲义
7. 例题7. 方盒游戏
第七章测验
第八章 深度优先搜索(一)
1. 在图上寻找路径和遍历(一)
2. 在图上寻找路径和遍历(二)
3. 图的表示方法:邻接矩阵和邻接表
4. 例题1. 城堡问题
5. 例题2. 踩方格
第八章讲义
第八章测验
第九章 深度优先搜索(二)
1. 剪枝的思想和例题1 寻路问题(一)
2. 例题1 寻路问题(二)
3. 例题2. 生日蛋糕
第九章讲义
第九章测验
第十章 广度优先搜索
1. 广度优先搜索的基本思想
2. 例题. 迷宫问题
3. 例题. 八数码问题
第十章讲义
第十章测验
第十一章 贪心算法
1. 贪心算法的基本思想
2.例题: 电影节
3.例题:分配畜栏
4.例题:放置雷达
5.例题:钓鱼
第十一章讲义
第十一章测验
高等教育出版社《算法基础与在线实践》,刘家瑛,郭炜,李文新 编著
此书和课程内容配套,课程中大部分例题在书中均有详解。
1.本课程的作业和考试形式是怎样的?
答:本课程的作业,以及最后的期末考试,形式都是在北京大学在线程序评测系统 openjudge.cn上提交程序,由系统自动评判正误。程序不能有丝毫错误。这种形式对于提高编程能力极其有效。