算法专题
文章平均质量分 58
张少锋的博客
Newer
展开
-
最长上升子序列(LIS)小白详解及模板代码
最长上升子序列(LIS)小白详解及模板代码最长上升子序列是动态规划的经典问题。动态规划问题的核心在于找到子问题结构,然后写出递推式,LIS问题也是这样。下面分为3个部分详解LIS问题。1.找子问题原创 2017-05-17 20:31:20 · 415 阅读 · 0 评论 -
对数函数应用实例
C语言数学库中定义了两个对数函数,它们是 1.double log(double x) 这个函数用于计算以e为底的对数值。 2.double log10(double x) 这个函数用于计算以10为底的对数值。 第二个函数经常用于数字位数的计算中。如下面这道经典例题(题目来源忘了)原创 2017-05-11 22:12:06 · 5266 阅读 · 0 评论 -
并查集原理及代码
前两天在CSDN博客上看到的一篇讲并查集的文章,文笔优美且通俗易懂。拜读之后,很快就对并查集有了较透彻的理解。所以分享出来,供大家学习交流。转载 2017-05-09 14:41:28 · 487 阅读 · 0 评论 -
BFS(带回溯路径) 典例 代码
BFS经典例题:题目大意:给定一个点图,然后输出S到T的最短路径。样例输入: /* 5 6 ###T#* S#**** *##*## ****** *#*#*# */样例输出: (1,0)->(2,0)->(3,0)->(3,1)->(3,2)->(3,3)->(2,3)->(1,3)->(0,3)AC代码如下:原创 2017-05-15 23:27:49 · 904 阅读 · 0 评论 -
动态规划经典入门题目
动态规划经典入门题目嗯,这道题的思路就非常简单了,给出关键的递推公式吧:getmax[i][j]=max(getmax[i+1][j],getmax[i+1][j+1])+graph[i][j]。(从数字金字塔的底部向上递推)下面是AC代码原创 2017-05-28 20:36:21 · 311 阅读 · 0 评论 -
背包问题模板(01背包,完全背包,多重背包)
背包问题模板(01背包,完全背包,多重背包)背包问题作为一类非常常见的问题,这里给出背包问题(01背包,完全背包,多重背包)的模板,以后自己做题就很方便啦。这里以多重背包为例一并给出main()函数代码。原创 2017-05-28 20:46:26 · 805 阅读 · 0 评论 -
深入理解Floyd算法思路
你真的理解Floyd算法吗Floyd算法经典代码只有5行(或者也可以写成4行),思路听起来也那么“显然”。但大部分人对Floyd算法的理解仅仅限于它的实现是三层循环,k在最外层,i和j在内层不分顺序,用路径松弛来更新最短路径。但其实大多数人都没有弄清楚一个问题,为什么外层循环是遍历k,而不是把k放到最内层呢,只是知道放在里边就不对了。当然,也有不少博客解释这个问题,但写的大多有些复杂,下面是我个人的理解。原创 2017-05-17 22:30:32 · 2588 阅读 · 1 评论 -
经典Prim算法题目及代码
经典Prim算法题目及代码Prim算法是解决最小生成树的经典算法(尤以稠密图效率很高),现对这样一道简单最小生成 题目给出完整代码(有注释)。输入n和m,代表n个节点,m条边,然后是m行输入,每行有x,y,z,代表x到y的路距离为z。问题:能使各点联通的最短路径是多少。测试样例:原创 2017-05-22 17:23:17 · 1485 阅读 · 0 评论 -
经典dijkstra算法题目及代码
经典dijkstra算法题目及代码Dijkstra算法是解决单源最短路的经典算法,现对这样一道简单的题目给出完整代码(有注释)。输入n和m,代表n个节点,m条边,然后是m行输入,每行有x,y,z,代表x到y的路距离为z。问题:从1出发到各点的最短路径。直接给出AC代码。原创 2017-05-22 17:10:33 · 6162 阅读 · 1 评论