笔记
bfftalking
这个作者很懒,什么都没留下…
展开
-
刷题01*数组-1(二分法)
🌟二分法第一种写法 第一种写法,我们定义 target 是在一个在左闭右闭的区间里,也就是[left, right] (这个很重要非常重要)。 区间的定义这就决定了二分法的代码应该如何写,因为定义target在[left, right]区间,所以有如下两点: while (left <= right) 要使用 <= ,因为left == right是有意义的,所以使用 <= if (nums[middle] > target) right 要赋值为 middle原创 2022-04-29 09:53:44 · 64 阅读 · 0 评论 -
动态规划思想
动态规划和递归算法的区别 本文举例都采用斐波那契数列 迭代:循环 最优子结构:原问题的最优解,可以通过求解子问题 的最优解进而推出原问题的最优解 重叠子问题:在递归中,比如计算f(10),但是会把f (8)或者f(9)等等,进行多次计算;动态规划消除了重 叠子问题,不进行多次重复计算 自顶向下:比如求解f(n),需要求得f(n-1),进而计算 出f(n)的解;所以斐波那契数列递归时才会出现f(n-1) + f(n-2) 自底向上:我们直接从最底下,最简单,问题规模最小的f(1)和f(2)开始往上推,直到推到原创 2022-01-14 11:04:25 · 223 阅读 · 0 评论 -
DFS算法思想
深度优先遍历(DFS) 方法: 在访问图中某一起始顶点v后,由v出发,访问它的任一邻接顶点w1。 再从w1出发,访问与w1邻接接但还未被访问过的顶点w2。 然后再从w2出发,进行类似的访问… 如此进行下去,直至到达所有的邻接顶点都被访问过的顶点u为止。 接着,退回一步,退到前一次刚访问过的顶点,看是否还有其它没有被访问的邻接顶点。 如果有,则访问此顶点,之后再从此顶点出发,进行与前述类似的访问; 如果没有,就再退回一步进行搜索。重复上述过程,直到连通图中所有顶点都被访问过为止。 ...原创 2021-10-29 21:27:04 · 466 阅读 · 0 评论 -
BFS算法思想
广度优先搜索( BFS - Breadth_First Search) 方法: 从图的某一结点出发,首先依次访问该结点的所有邻接顶点Vi1, Vi2,…, Vin,再按这些顶点被访问的先后次序依次访问与它们相邻接的所有未被访问的顶点。 重复此过程,直至所有顶点均被访问为止。 ...原创 2021-10-29 21:26:21 · 158 阅读 · 0 评论 -
汉罗塔问题
n阶汉罗塔(递归算法)#include <bits/stdc++.h> using namespace std; int m=1; void Move (char x,int n,char y){ printf("%2d. Move disk %d from %c to %c\n",m,n,x,y); m++; } void hanoi (int n,char x,char y,char z){ if (n==1){Move(x,1,z);} else { hanoi (n-1,x,z,y);原创 2021-10-25 09:37:18 · 97 阅读 · 0 评论