蓝桥算法学习
文章平均质量分 83
求索1908
眼里赋予星光,脚下赋予方向
展开
-
关于上一题DFS残垣断壁的其他解法
每次看前后两个位置,前一个符合就入队,后一个符合继续入队,当后一个不符合,前面入队的全部以一组的形式放进二维容器中,作为柱状统计图的一列;最后二维容器的列数就是连续的块数。题目由于重力效应,不会出现浮空现象,故所有连通块必然和地面接壤,所有连通块的分割必然是垂直分割,故,连通块数等于最后一行的连通块数。由分析可以很明显的看出:可以大幅剪枝,dfs的范围缩减为一行,探索分支由4变为2。用一个布尔变量来表示指针所在位置的状态,在发生变化(脉冲)时累计次数。,通过滚动的形式完成了对线段连续性的判断——原创 2024-04-08 20:16:48 · 599 阅读 · 1 评论 -
BFS——求边权值为1的最小步数模型
在一个 3×33×3 的网格中,1∼81∼8 这 88 个数字和一个x恰好不重不漏地分布在这 3×33×3 的网格中。在游戏过程中,可以把x与其上、下、左、右四个方向之一的数字交换(如果存在)。例如,示例中图形就可以通过让x先后与右、下、右三个方向的数字交换成功得到正确排列。现在,给你一个初始网格,请你求出得到正确排列至少需要进行多少次交换。原创 2024-03-27 09:48:54 · 241 阅读 · 0 评论 -
DFS——求连通子图数
访问根节点、进而访问全部邻接点。访问完后回到上一层,上一层做另一个选择。原创 2024-04-07 18:36:03 · 534 阅读 · 0 评论 -
第十四届蓝桥杯省赛Java A组/C组——平均(贪心算法)
故!本体关键:判断条件:if(mp[ab[i].first]>n/10){//ai重复次数大于n/10局部变量的初始化而贪心思想还是体现在对二元组的排序上原创 2024-03-28 17:43:41 · 606 阅读 · 0 评论 -
蓝桥杯算法学习纪实——费解的开关
一开始暴力枚举,是因为,为了实现目标,我们没有根据来指导做出第一步和下一步,不知道怎样的方案能使得灯全被按亮,所以穷举所有方案再判断哪些可以,再取其中步数最小的;而后面第二行开始不再暴力枚举,是因为下一步有了根据,按照这个规则一定就能实现全局的目标。所以其中也有局部最优解的思想,即,贪心;同时,完成 5 次分支后,不在进行不必要的分支,这也是剪枝的思想。原创 2024-02-29 17:45:06 · 1056 阅读 · 0 评论 -
蓝桥杯算法学习纪实——递归实现排列型枚举
总结: 递归最大的好处就是可以回溯; 多分枝搜索树利用回溯法遍历,正是利用了递归的“回溯特性”,使得各分支都能得到不重不漏的遍历; 而递归有几个关键点:1、顺序;2、底;3、相同的操作。原创 2024-02-06 23:09:14 · 913 阅读 · 0 评论 -
蓝桥杯算法学习纪实——递归实现指数型枚举
就类似二叉树的先根序遍历,区别就在于DFS每步的选择能不相同,但需要判断每步是否还有选择,没有其他选择则回归,有则继续下一步(往深处“搜索”)。这就像”树“的层次结构一样,每往下一层,就多一个结点,就多选一个数字,所以有多少个数,“树”就有几层。我们会发现,每递推到一个分支的底部,就会得到一个完整信息,那我们在递归函数回归前,加入输出代码,便能实现每递归完一个分支就输出一种结果,直至递归结束,所有结果输出完成。在这里,“每个数字是否被挑选”,描述的是一种状态,每个数字的选择状态,,每个结点保存这些状态。原创 2024-01-27 22:29:36 · 375 阅读 · 1 评论 -
第十四届蓝桥杯省赛C++ C组——三国游戏(贪心算法)
闲言少叙,解决算法题,可以利用数学思维来将问题转化,这是非常聪明的做法,算法题本来就应该这么做。而不是无脑的去暴力枚举,毫无思维技巧性可言。所谓的思维技巧,都是想让解决问题的方法更快速,更全面。原创 2024-03-27 21:54:59 · 601 阅读 · 2 评论