程序设计与算法(二)算法基础
程序设计与算法(二)算法基础
20万+ 人选课
更新日期:2026/03/31
开课平台爱课程(中国大学MOOC)
开课高校北京大学
开课教师郭炜
学科专业工学计算机类
开课时间2025/02/17 - 2025/08/17
课程周期26 周
开课状态已结课
每周学时-
课程简介

仅仅熟练掌握程序设计语言并不能成为好的程序员。对于许多问题,如果没有好的算法,计算机只能低效地解决,甚至无法解决。因此,好的程序员,还应该对程序的灵魂 --- 算法有较好理解并能灵活应用。

 

本课程要讲授的就是枚举、二分、递归、分治、动态规划、搜索、贪心这七种基本的通用算法。各种复杂算法问题的解决,都可能用到这些基本的思想。


本门课程面向需要进一步提高编程和算法水平的学习者。要求学习者已经掌握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的百科书式大全课程,入门、提高均非常适合!)

https://www.icourse163.org/course/PKU-1460924165

课程大纲
枚举算法
1.1.枚举的基本思想
1.2.例题:生理周期
1.3.例题:称硬币
1.4例题:熄灯问题(1)
1.5例题:熄灯问题(2)
1.6Openjudge在线做题必读
递归(一)
2.1递归的基本思想
2.2例题:汉诺塔
2.3例题:N皇后
2.4例题:逆波兰表达式求值
递归(二)
3.1例题:表达式求值
3.2例题:上台阶
3.3例题:放苹果
3.4例题:算24
二分算法
4.1程序或算法的时间复杂度
4.2二分查找的原理和实现
4.3二分法求方程的根
4.4例题1找一对数
4.5例题2农夫和奶牛
分治算法
5.1分治的基本思想
5.2快速排序
5.3例题:输出前m大的数
5.4例题:求排列的逆序数
动态规划(一)
6.1动态规划的基本思想
6.2例题:数字三角形
6.3动态规划解题一般思路
6.4例题:最长上升子序列
6.5例题:最长公共子序列
6.6例题:最佳加法表达式
动态规划(二)
7.1例题HelpJimmy
7.2例题滑雪
7.3例题神奇的口袋
7.4例题0-1背包问题
7.5例题分蛋糕
深度优先搜索(一)
8.1.在图上寻找路径和遍历(一)
8.2.在图上寻找路径和遍历(二)
8.3.图的表示方法:邻接矩阵和邻接表
8.4.例题1.城堡问题
8.5.例题2.踩方格
深度优先搜索(二)
9.1.剪枝的思想和例题1寻路问题(一)
9.2.例题1寻路问题(二)
9.3.例题2.生日蛋糕
广度优先搜索
10.1广度优先搜索的思想
10.2例题迷宫问题
10.3例题八数码问题
贪心算法
11.1.贪心算法的基本思想
11.2.例题:电影节
11.3.例题:分配畜栏
11.4.例题:放置雷达
11.5.例题:钓鱼
App 下载
关注我们