算法
文章平均质量分 52
4ban
九折
展开
-
(递归)杨辉三角实现
问题描述杨辉三角形又称Pascal三角形,它的第i+1行是(a+b)i的展开式的系数。 它的一个重要性质是:三角形中的每个数字等于它两肩上的数字相加。 下面给出了杨辉三角形的前4行: 1 1 1 1 2 1 1 3 3 1———————————————思路:可以用二维数组实现,且二维数组第一列和最后一列全为1,从第三列开始,每个数等于上面两个数之和即f(x,y)=f(x-1,y-1)+f(x-1,y)实现:使用递归实现当不为原创 2022-02-04 21:40:38 · 4137 阅读 · 1 评论 -
(递归):汉诺塔问题
问题:汉诺塔传说: 汉诺塔(又称河内塔)问题是源于印度一个古老传说的益智玩具。大梵天创造世界的时候做了三根金刚石柱子,在一根柱子上从下往上按照大小顺序摞着64片圆盘。大梵天命令婆罗门把圆盘从下面开始按照带线啊哦顺序重新拜访在另一根柱子上。并且规定,在小圆盘上不能放大圆盘,在三根柱子之间一次只能移动一个圆盘。递归思想:递归就是自己调用自己,每次调用时传入不同的变量。直至逼近条件。汉诺塔思想:首先:设三根柱子 A B C1、当A上只有一片圆盘时,直接将圆盘从A上移到C上。2、当A有原创 2022-01-26 21:46:54 · 573 阅读 · 0 评论 -
桶排序 (基础算法)
算法思路:将数字存进对应的桶中(数组对应索引)。对数组进行顺序输出即可。 优点:快速 时间复杂度为o(i+j); 使用范围:因为需要确定桶数(即数组大小),所以对于数据量较大的排序较浪费空间。即 相对来说适合数据量较小的情况例子:对0-10任意个数进行排序。实现:1.有多少个数,创建多大的数组(桶) 2.for循环依次存入数组中。 3.顺序输出数...原创 2022-01-26 21:24:42 · 783 阅读 · 0 评论 -
dp动态规划(硬币问题)(lis最长上升子序列问题)
定义:按照定义:动态规划是把一个大问题拆解成一堆小问题,且这些小问题可以重复利用至求出大问题。即什么时候能用dp:1满足最优子结构 大问题的最优解可以由小问题的最优解推出,大问题与小问题求解思路一致。2.满足无后效性一旦f(n)确定,后续就可直接调用它的值,而不用关心它是怎么样过来的。即可从小问题退出大问题。3.设计好状态想办法把当前局面给表达出来4.设计好状态转移方程 我从哪里来,或我到哪里去问题:若干硬币,面值 1,5,10,20,50,100凑出价值w,...原创 2022-01-23 23:20:25 · 482 阅读 · 0 评论 -
dfs深度优先搜索问题
深度优先搜索属于图算法的一种,是一个针对图和树的遍历算法,英文缩写为DFS即Depth First Search。深度优先搜索是图论中的经典算法,利用深度优先搜索算法可以产生目标图的相应拓扑排序表,利用拓扑排序表可以方便的解决很多相关的图论问题,如最大路径问题等等。一般用堆数据结构来辅助实现DFS算法。其过程简要来说是对每一个可能的分支路径深入到不能再深入为止,而且每个节点只能访问一次。实现:1.需要一个方向(即在矩阵种,按某种方式进行寻找(顺时针或逆时针))。 2.回溯,寻找...原创 2022-01-14 22:37:47 · 139 阅读 · 0 评论