- 博客(8)
- 收藏
- 关注
原创 蓝桥杯真题讲解之暴力求解
在蓝桥杯中许多题目即使不知道正解都可以采用暴力求解,我们就以这两个题目为例采用DFS与BFS暴力求解,如果对DFS和BFS不太熟悉可以先看看这个解析:在这个题目中首先注意到数据N<20,这时候很容易想到题目的时间复杂度应该会很高,该题目又是棋盘的形式,很容易联想到DFS/BFS。这道题目我们就以DFS为例来讲解。题目要求在每个格子处要往正西方和正北方各打一枪,在终点处,确保每行每列对应的中枪总数要满足题目要求(终止条件)。DFS就是构建一棵树出来,回溯就是同一层节点之间的转变。
2025-04-05 22:29:26
452
原创 高精度快速幂与欧拉筛法
a^n=a*a*a*····*a,暴力计算需要O(n)的时间,想要快速计算,可以使用二级制拆分和倍增的思想,它的时间复杂度只需要O(logn)。
2025-04-03 22:19:49
272
原创 完全背包问题中的排列与组合(补充)
当零钱面值过大时,大于总金额,无法参与兑换,这张钱币就不用参与兑换,这时兑换的种类就等于i-1行的种类数;当它可以参与兑换,即兑换的所有面值小于总金额,就会新增第i张钱币参与的情况,就加上dp[amount-weight[i]],即dp[j]=dp[j]+dp[amount-weight[i]];遍历顺序就是先遍历物品再遍历书包;初始化:dp[3]=dp[3]+dp[3-3]=3+1=4,这里的dp[0]=1没有啥意义,就是从递推关系中得出;(具体代码见上篇博客)
2025-03-23 12:10:43
456
原创 DFS与BFS
深度优先算法是一种很常见的遍历、搜索算法,其核心思想是“暴力”,遍历每个点,找到符合条件的点。时间复杂度在邻接表时是O(V+E),在邻接矩阵中是O(V²),其中V是节点数,E是遍历的边数。从时间复杂度上看,优先考虑使用邻接表。
2025-03-21 19:58:36
367
原创 二分法 (在有序数列里查找)
二分法的时间复杂度是logn,对于一些很大的数列要进行查找时,优先考虑二分。一般查找的复杂度是O(logn2),通常假设一个现代编译器优化后的代码在每秒钟可以执行大约 10e8 到 10e9 次简单操作,如果数据大于10e4,优先使用二分法。
2025-03-16 10:38:46
598
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人