蓝桥杯学习记录(2)——算法简述

蓝桥杯学习记录(2)——算法简述

狮子阿儒 Lv4

常考的算法

image-20240205113759867

动态规划

动态规划是一种解决多阶段决策问题的算法思想,常用于求解最优化问题。它通过把原问题分解为若干个子问题的方式,将复杂问题简化成一系列相对简单的子问题,然后逐步解决这些子问题,并将它们的解组合起来得到原问题的最优解。

贪心算法

贪心算法是一种常见的算法思想,通常用于解决优化问题,它总是在每一步选择中,选择当前状态下最优的解决方案,从而希望最终能够达到全局最优解。

排列组合

在算法中,排列和组合都是与集合相关的概念,其中排列强调顺序,而组合则不强调顺序。
排列是指从给定的元素集合中,按照一定的顺序取出若干元素进行排列。比如,对于集合 {a, b, c},它的所有排列有 abc、acb、bac、bca、cab、cba 六种。排列的数量可以使用阶乘来计算。对于 n 个元素的集合,它的排列数为 n!,即 n 的阶乘。
组合是指从给定的元素集合中,取出若干个元素,不考虑它们的顺序,形成一个子集。比如,对于集合 {a, b, c},它的所有组合有 {a}、{b}、{c}、{a,b}、{a,c}、{b,c}、{a,b,c} 这七个。组合的数量可以使用组合数公式计算,即从 n 个元素中取出 k 个元素的组合数为 C(n,k),也可以表示为 n!/((n-k)!k!)。

搜索(深度优先/广度优先)

深度优先搜索(Depth-First Search, DFS)和广度优先搜索(Breadth-First Search, BFS)都是常见的图搜索算法,可以用于解决很多问题,例如求解最短路径、连通性等问题。
广度优先搜索则是从某个顶点出发,首先访问这个顶点,并将与这个顶点相邻的未访问过的顶点加入队列中,然后从队列中取出一个顶点,访问这个顶点,并将与这个顶点相邻的未访问过的顶点加入队列中,重复这个过程,直到队列为空为止。广度优先搜索通常使用队列实现。

分治法

分治法是一种常见的算法设计策略,它将一个问题分解成若干个子问题,递归地求解子问题,再将子问题的解合并起来,得到原问题的解。

回溯法

回溯法(Backtracking)是一种求解决策问题的算法。它是一种深度优先搜索的算法,用于在一组候选解中搜索满足约束条件的解。回溯法通常采用递归的方式进行搜索。
回溯法的基本思想是从问题的一个可能解开始搜索,如果发现这个解不符合约束条件,那么就回溯到上一个节点,再从上一个节点继续搜索其它的解。回溯法的关键是在搜索过程中及时剪枝,减少无效搜索,提高算法效率。

递推和递归

递推(Recurrence)是指根据已知的前一项或几项,推导出下一项的过程。在计算机科学中,递推通常通过循环实现,使用已知的前一项或几项,计算出下一项,以此类推,直到计算到所需的项为止。递推常用于计算斐波那契数列、阶乘等。
递归(Recursion)是指在函数的定义中使用函数自身的过程。在计算机科学中,递归通常通过函数的调用实现,函数在执行过程中会调用自身,直到满足某种条件返回为止。递归常用于求解树形结构问题、图形问题等。

暴力枚举

暴力枚举(Brute Force)是一种简单直接的求解问题的方法,通常也被称为穷举法。它的基本思想是将所有可能的解都枚举出来,然后逐一判断这些解是否符合问题的要求,最终得到符合要求的解。

高精度加减乘除

高精度加减乘除的基本思想是将整数转化为字符串,并按照数字位进行计算。在加法和减法中,我们可以借鉴手算加减法的思路,按照从低位到高位的顺序,逐位相加或相减,同时需要考虑进位或借位的情况。在乘法和除法中,我们可以将两个整数拆分成每一位上的数字,然后按照手算乘法或除法的思路进行计算,最终将结果合并起来即可。

  • 标题: 蓝桥杯学习记录(2)——算法简述
  • 作者: 狮子阿儒
  • 创建于 : 2024-01-23 11:36:36
  • 更新于 : 2024-03-03 21:34:27
  • 链接: https://c200108.github.io/blog/2024/01/23/蓝桥杯学习记录(2)——算法简述/
  • 版权声明: 本文章采用 CC BY-NC-SA 4.0 进行许可。
评论