ACM经典算法集锦:从河内塔到快速排序

需积分: 0 24 下载量 52 浏览量 更新于2024-08-02 收藏 969KB DOC 举报
"ACM超级经典算法大集合,包含各种ACM竞赛中的经典算法,如河内塔、费式数列、巴斯卡三角形等,适合编程爱好者学习和参考。" 这篇资源主要涵盖了一系列经典的算法,这些算法在计算机科学,尤其是算法竞赛(如ACM)中非常常见。让我们逐一探讨这些算法及其重要性: 1. **河内塔**:这是一个典型的递归问题,用于教授递归和问题解决策略。它涉及将一堆盘子从一根柱子移动到另一根柱子,中间柱子作为辅助,始终遵循大盘子在小盘子下方的规则。 2. **费式数列**:Fibonacci数列是数学中的一个重要概念,每个数是前两个数的和,通常表示为F(n) = F(n-1) + F(n-2)。在算法中,它常用于理解和实现动态规划。 3. **巴斯卡三角形**:Pascal's Triangle是一种数学结构,每个数是其上方两数之和,与组合数学和二项式定理密切相关,用于计算组合数量。 4. **三色棋**、**老鼠走迷宫**、**骑士走棋盘**、**八个皇后**等都是典型的图论和搜索问题,用于探索路径规划、冲突检测和解空间的遍历。 5. **八枚银币**、**生命游戏**、**字串核对**等属于逻辑和模拟问题,涉及到状态空间的探索和规则的应用。 6. **背包问题**(Knapsack Problem)是组合优化问题,通常用贪心或动态规划策略求解,用于在有限容量的背包中选取价值最大的物品。 7. **蒙地卡罗法求PI**是一种随机化算法,通过大量随机点来估算圆周率π。 8. **Eratosthenes筛选求质数**是找到所有小于特定数的质数的高效方法,利用了素数的性质。 9. **超长整数运算**(大数运算)涉及到处理超过常规数据类型所能表示的数值,是加密算法和高精度计算的基础。 10. **最大公因数、最小公倍数、因式分解**是数论的基础,对于理解整数性质和解决相关问题至关重要。 11. **完美数**是指其所有真因数之和等于本身的数,研究完美数有助于深入理解数论。 12. **阿姆斯壮数**是其每一位数字的幂次和等于其本身的数,例如153(1^3 + 5^3 + 3^3 = 153)。 13. **最大访客数**、**中序式转后序式**等是数据结构和算法问题,涉及树的遍历和序列化。 14. **排序算法**如选择排序、插入排序、气泡排序、Shell排序、Shaker排序、Heap排序、快速排序、合并排序和基数排序,是算法学习的核心,它们在数据处理和效率优化中起到关键作用。 15. **搜寻算法**如循序搜寻、二分搜寻、插补搜寻、费氏搜寻,用于在数据集中查找特定元素。 16. **矩阵运算**包括稀疏矩阵、多维矩阵转一维矩阵、上三角、下三角、对称矩阵等,广泛应用于线性代数和图形学。 17. **奇数魔方阵**、**4N魔方阵**、**2(2N+1)魔方阵**是矩阵理论的特殊形式,具有特定的性质和应用。 18. **约瑟夫问题**(Josephus Problem)是一个著名的循环列表问题,涉及到生存者的选择策略。 19. **集合问题**、**排列组合**、**格雷码**、**产生可能的集合**、**m元素集合的n个元素子集**、**数字拆解**等涉及组合数学和图论。 这些算法不仅是学术研究的基础,也是实际软件开发中的常用工具,对提升编程能力和解决复杂问题的能力有很大帮助。通过学习和理解这些经典算法,编程爱好者可以更好地掌握计算机科学的核心原理。
2010-02-06 上传
一.数论 4 1.阶乘最后非零位 4 2. 模线性方程(组) 4 3. 素数表 6 4. 素数随机判定(miller_rabin) 6 5. 质因数分解 7 6. 最大公约数欧拉函数 8 二.图论_匹配 9 1. 二分图最大匹配(hungary邻接表形式) 9 2. 二分图最大匹配(hungary邻接表形式,邻接阵接口) 10 3. 二分图最大匹配(hungary邻接阵形式) 10 4. 二分图最大匹配(hungary正向表形式) 11 5. 二分图最佳匹配(kuhn_munkras邻接阵形式) 11 6. 一般图匹配(邻接表形式) 12 7. 一般图匹配(邻接表形式,邻接阵接口) 13 8. 一般图匹配(邻接阵形式) 14 9. 一般图匹配(正向表形式) 15 三.图论_生成树 16 1. 最小生成树(kruskal邻接表形式) 16 2. 最小生成树(kruskal正向表形式) 17 3. 最小生成树(prim+binary_heap邻接表形式) 19 4. 最小生成树(prim+binary_heap正向表形式) 20 5. 最小生成树(prim+mapped_heap邻接表形式) 21 6. 最小生成树(prim+mapped_heap正向表形式) 22 7. 最小生成树(prim邻接阵形式) 23 8. 最小树形图(邻接阵形式) 24 四.图论_网络流 25 1. 上下界最大流(邻接表形式) 25 2. 上下界最大流(邻接阵形式) 26 3. 上下界最小流(邻接表形式) 27 4. 上下界最小流(邻接阵形式) 29 5. 最大流(邻接表形式) 30 6. 最大流(邻接表形式,邻接阵接口) 31 7. 最大流(邻接阵形式) 32 8. 最大流无流量(邻接阵形式) 32 9. 最小费用最大流(邻接阵形式) 33 五. 图论_最短路径 34 1. 最短路径(单源bellman_ford邻接阵形式) 34 2. 最短路径(单源dijkstra_bfs邻接表形式) 35 3. 最短路径(单源dijkstra_bfs正向表形式) 35 4. 最短路径(单源dijkstra+binary_heap邻接表形式) 36 5. 最短路径(单源dijkstra+binary_heap正向表形式) 37 6. 最短路径(单源dijkstra+mapped_heap邻接表形式) 38 7. 最短路径(单源dijkstra+mapped_heap正向表形式) 39 8. 最短路径(单源dijkstra邻接阵形式) 40 9. 最短路径(多源floyd_warshall邻接阵形式) 40 六. 图论_连通性 41 1. 无向图关键边(dfs邻接阵形式) 41 2. 无向图关键点(dfs邻接阵形式) 42 3. 无向图块(bfs邻接阵形式) 43 4. 无向图连通分支(bfs邻接阵形式) 43 5. 无向图连通分支(dfs邻接阵形式) 44 6. 有向图强连通分支(bfs邻接阵形式) 44 7. 有向图强连通分支(dfs邻接阵形式) 45 8. 有向图最小点基(邻接阵形式) 46 七. 图论_应用 46 1.欧拉回路(邻接阵形式) 46 2. 前序表转化 47 3. 树的优化算法 48 4. 拓扑排序(邻接阵形式). 49 5. 最佳边割集 50 6. 最佳顶点割集 51 7. 最小边割集 52 8. 最小顶点割集 53 9. 最小路径覆盖 55 八. 图论_NP搜索 55 1. 最大团(n小于64)(faster) 55 2. 最大团 58 九. 组合 59 1. 排列组合生成 59 2. 生成gray码 60 3. 置换(polya) 61 4. 字典序全排列 61 5. 字典序组合 62 6. 组合公式 62 十. 数值计算 63 1. 定积分计算(Romberg) 63 2. 多项式求根(牛顿法) 64 3. 周期性方程(追赶法) 66 十一. 几何 67 1. 多边形 67 2. 多边形切割 70 3. 浮点函数 71 4. 几何公式 76 5. 面积 78 6. 球面 79 7. 三角形 79 8. 三维几何 81 9. 凸包(graham) 89 10. 网格(pick) 91 11. 圆 92 12. 整数函数 94 13. 注意 96 十二. 结构 97 1. 并查集 97 2. 并查集扩展(friend_enemy) 98 3. 堆(binary) 98 4. 堆(mapped) 99 5. 矩形切割 99 6. 线段树 100 7. 线段树扩展 102 8. 线段树应用 105 9. 子段和 105 10. 子阵和 105 十三. 其他 106 1. 分数 106 2. 矩阵 108 3. 日期 110 4. 线性方程组(gauss) 111 5. 线性相关 113 十四. 应用 114 1. joseph 114 2. N皇后构造解 115 3. 布尔母函数 115 4. 第k元素 116 5. 幻方构造 116 6. 模式匹配(kmp) 118 7. 逆序对数 118 8. 字符串最小表示 119 9. 最长公共单调子序列 119 10. 最长子序列 120 11. 最大子串匹配 121 12. 最大子段和 122 13. 最大子阵和 123