移动端 Banners
[奇技淫巧] C++ 编程小寄巧
我非常喜欢一些奇技淫巧,每次有机会时就想用点小技巧,既方便了自己、有时还能博来他人的赞叹,实属一举两得的行为。在这篇文章之前,我的奇技淫巧仅局限于高中数学题。接下来我把进入 C++ 编程以来收集的实用小技巧全部放在这里,并不定时更新新的小技巧。希望能帮到后人。
Floyd 算法——脚踏图论、数学两条船的算法
Floyd 算法是一种能在 \mathcal O(n^3) 时间复杂度内求出任意两点间最短路长度的多源最短路算法,又称 \texttt{Floyd-Warshall} 算法或插点法,以它的发明者命名。Floyd 算法基于动态规划,通过穷举 i 节点和 j 节点的所有中继节点 k 进行松弛操作得到最短路径。对于稠密图,它的执行效率会快于 Dijkstra 和 Bellman-Ford 算法。
[奇技淫巧] 矩阵行列式瞬秒立体图形体积计算
行列式最初作为判断某个方程组是否有解的依据被人们使用,记作 \det,有时也用形如 \left|\begin{matrix}a_1&a_2&a_3\\b_1&b_2&b_3\\c_1&c_2&c_3\end{matrix}\right| 的式子来表示这个矩阵的行列式的值。类比一元二次方程的 \Delta 判别式——我们定义,当矩阵 A 的行列式的值为零时,该矩阵方程组无解,即 \det(A)=0 时方程组无解。
IDA* ——启发式迭代加深搜索算法
我们先前在 这篇文章 中探讨了 A* 算法以及其实现思路。回顾一下,A* 算法为普通的搜索算法加上了一个名为估价函数的设置,使得 A* 能够在搜索时不会那么偏离正确答案(最短路径)。从而大幅改善了普通 BFS 的近似穷举的低效策略。