程序设计基本知识结构

来源:互联网 发布:赵敏脚心 知乎 编辑:程序博客网 时间:2024/05/17 02:53

基本知识结构:

       编码

       文件输入/输出

       大文件的问题

       行超长的问题

       数学运算

       字符串处理

       表达式求值/展开

       英文数字朗读

       简单程序的模拟执行(文法识别)

       递归

 

       数据结构

       表示

       线性结构

       : 边列表, 父亲, 遍历结果, “括号表示

       A(B(H(), I(), J()), C(D(), E(F(), G())))

      

       线性结构基本算法

       排序

       二分检索

       *串匹配(KMP)

      

       遍历: 二叉树, 层次

       ***huffman

       多叉树转二叉树

       完全二叉树数组表示

      

       遍历: DFS, BFS

       拓扑排序

       *最小生成树

       *最短路

       *欧拉路/回路

       **关键路径

       功能数据结构

       散列表(哈希表): 字典

       *排序二叉树(BST): 字典, 易扩充

       *: 动态取最小值

       **字母树(Trie): 字符串字典

       ***线段树: 区间操作, 易扩充

 

       算法设计

       基本算法设计思想

       枚举

       贪心

       递归

       递推

       **构造

       模拟

       分治

       ***解递归方程.

       解方程结论: T(n)=2T(n/2)+n

       归并排序/逆序对, 快速排序,第k大数

       **最近点对

       搜索

       搜索算法

       深度优先搜索

       回溯法

       广度优先搜索

       **启发式搜索

       双向广度优先搜索

       经典问题

       n皇后问题 (30)

       8数码问题 (一定要写)

       **骑士遍历

       动态规划

       状态ó状态转移方程

       决策、(边界条件)(阶段)

       最优子结构、无后效性

       实现: 自底向上递推, 自顶向下的记忆化递归

       递推: 附加时/空开销小, 可用滚动数组, 好调试

       *递归: 直观/好写/好想, 只解需要解的东西

       **递推的两种实现

       动态规划

       最长上升子序列(LIS)/导弹拦截第一问

       最长公共子序列(LCS)/回文词ioi2000

       1 2 3 4 5 6 7

       1 3 2 4 6 7 8

       最优排序二叉树. O(n3)

       背包问题?

       最优矩阵乘法A * (B * C) * D * E. O(n3)

       花店IOI99 little flower shop

       乘积最大. 2000

       *方格取数. 2000

       *石子合并. ioi95

       动态规划动机

       线性结构

       树状

       数值重复/数值范围

       n个人,每个数不超过m, nm/2

       d[i,j] = d[i-1,j] or d[i-1,j-a[i]]

       *有向无环图(容易进行状态抽象)

 

       数学

       组合数学

       基本计数原理: 加法/乘法原理,排列组合,容斥原理

       递推关系,常见的组合数

       fibonacci

       Catalan

       *两类Stirling

       *母函数

       **其他计数方法: Polya定理, 反演

       代数

       高斯消元: 程序, 特殊情况, 溢出

       ***矩阵乘法

       *置换、循环. 最小交换代价/8数码问题无解

       几何

       线段相交/交点

       多边形面积

       点和多边形的位置关系

       *凸包

       数论

       最大公约数, ax+by=gcd(a,b)的解

       素数判定

       素数筛

       同余

       **欧拉定理, ***欧拉函数

       **中国剩余定理

       数值计算方面

       简化: 如洪特规则

       pi/e的高精度计算

       ****数值积分: 梯形法, …

       非线性方程求根

       二分法: 每次计算f(x)

       模拟法, [0,10]求根, 保留两位小数

       ****Newton迭代

       ****一般意义下的迭代: x=(a-cos(x)-x2)1/3