![](https://img-blog.csdnimg.cn/ddb1d6087fd04eca8ef3b7deeec02a46.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
蓝桥杯
蓝桥杯相关的一些笔记和刷题记录
澄澈i
尽吾志也而不能至者,可以无悔矣。
变强总是让人抓耳挠腮,头顶着凉。
展开
-
蓝桥杯-2014年第五届真题--兰顿蚂蚁(C++)
题目 1429: [蓝桥杯][2014年第五届真题]兰顿蚂蚁时间限制: 1Sec 内存限制: 128MB 提交: 2503 解决: 1179题目描述兰顿蚂蚁,是于1986年,由克里斯·兰顿提出来的,属于细胞自动机的一种。平面上的正方形格子被填上黑色或白色。在其中一格正方形内有一只“蚂蚁”。蚂蚁的头部朝向为:上下左右其中一方。蚂蚁的移动规则十分简单:若蚂蚁在黑格,右转90度,将该格改为白格,并向前移一格;若蚂蚁在白格,左转90度,将该格改为黑格,并向前移一格。规则虽然简单,蚂蚁的行为却十分原创 2020-07-16 11:57:23 · 229 阅读 · 1 评论 -
[蓝桥杯]回形取数---C++版---详细记录
题目 1465: [蓝桥杯][基础练习VIP]回形取数时间限制: 1Sec 内存限制: 128MB题目描述回形取数就是沿矩阵的边取数,若当前方向上无数可取或已经取过,则左转90度。一开始位于矩阵左上角,方向向下。输入输入第一行是两个不超过200的正整数m, n,表示矩阵的行和列。接下来m行每行n个整数,表示这个矩阵。输出输出只有一行,共mn个数,为输入矩阵回形取数得到的结果。数之间用一个空格分隔,行末不要有多余的空格。样例输入3 31 2 34 5 67 8 9样例输出1 4原创 2020-07-17 10:30:45 · 850 阅读 · 1 评论 -
蓝桥杯---回文数问题---C++(普遍思路+优化思路)
题目 1434: [蓝桥杯][历届试题]回文数字时间限制: 1Sec 内存限制: 128MB题目描述观察数字:12321,123321 都有一个共同的特征,无论从左到右读还是从右向左读,都是相同的。这样的数字叫做:回文数字。本题要求你找到一些5位或6位的十进制数字。满足如下要求:该数字的各个数位之和等于输入的整数。输入一个正整数 n (10< n< 100), 表示要求满足的数位和。输出若干行,每行包含一个满足要求的5位或6位整数。数字按从小到大的顺序排列。如果没有原创 2020-07-16 15:12:18 · 1487 阅读 · 0 评论 -
特殊的质数肋骨(C++实现)
题目描述农民约翰母牛总是产生最好的肋骨。你能通过农民约翰和美国农业部标记在每根肋骨上的数字认出它们。农民约翰确定他卖给买方的是真正的质数肋骨,是因为从右边开始切下肋骨,每次还剩下的肋骨上的数字都组成一个质数。例如有四根肋骨的数字分别是:7 3 3 1,那么全部肋骨上的数字 7331是质数;三根肋骨 733是质数;二根肋骨 73 是质数;当然,最后一根肋骨 7 也是质数。7331 被叫做长度 4 的特殊质数。写一个程序对给定的肋骨的数目 N (1< =N< =8)原创 2020-07-10 21:50:14 · 1984 阅读 · 1 评论 -
动态规划入门1---数字三角形--C++
作为一个菜鸡,研究了几天的DP,把经典例题研究了几遍,现在,我在这发表一下自己的菜鸡见解,记录下我对DP的理解。DP里面少不了递归,当然也能混在搜索里面构成记忆化搜索作为优化,也可以用递推来动态规划。具体你要我说动态规划是个什么东西,我也只能说说自己的理解:满足条件:最优子结构情况 (一个问题可以拆分成子问题来解决。很多的DP都涉及到了01背包问题这种思想,比如对待这个状态的解决方法,他的下一个状态是,得到与抛弃两种情况的和,即为背包问题的拿与不拿)无后效性(即当前情况的结果对后面的结果没有影原创 2020-07-23 13:52:16 · 498 阅读 · 0 评论 -
DFS入门题--迷宫问题--详细--用于自我记录
本题目来源取自网络。题目补充:只能走上下左右四个方向,不能斜向走;输入(行m,列n,行列的数字,起点坐标,终点坐标)5 41 1 2 11 1 1 11 1 2 11 2 1 11 1 1 21 1 4 3输出:7DFS简述:“不到南墙不回头”,从当前点往下搜索,如果满足条件,标记满足点为搜索过,则以满足条件的点为起点继续搜索,直到不满足条件,则一直回退到与满足条件的点的相邻的,且未被搜索过的点,继续重复上述操作。当然这只是我个人理解,更多以及更好的DFS原理详解,参考百度。回溯原创 2020-07-15 13:09:42 · 341 阅读 · 1 评论 -
蓝桥杯---递归入门---Sine之舞---C++
题目 1463: [蓝桥杯]Sine之舞时间限制: 1Sec 内存限制: 128MB题目描述最近FJ为他的奶牛们开设了数学分析课,FJ知道若要学好这门课,必须有一个好的三角函数基本功。所以他准备和奶牛们做一个“Sine之舞”的游戏,寓教于乐,提高奶牛们的计算能力。不妨设An=sin(1–sin(2+sin(3–sin(4+…sin(n))…)Sn=(…(A1+n)A2+n-1)A3+…+2)An+1FJ想让奶牛们计算Sn的值,请你帮助FJ打印出Sn的完整表达式,以方便奶牛们做题。输入仅有一原创 2020-07-19 17:02:22 · 265 阅读 · 0 评论 -
C/C++数据结构-链表-链表合并排序输出
这个小例题涵盖的知识点还是非常多的。包括链表的定义,链表的尾插法,链表的遍历,冒泡排序用链表实现。链表可以使用带头结点和不带头结点的形式,各有千秋。本文完整版使用带头结点的链表。原创 2023-11-02 17:53:00 · 168 阅读 · 0 评论 -
C/C++选择排序算法
写了下选择排序的算法原理和时间复杂度分析,配上个例题阐述了一下原创 2023-10-30 23:17:30 · 187 阅读 · 0 评论 -
蓝桥杯---基础算法思想-分治思想+减治(算法笔记17)
分治法分治法的实现这个书上的这些讲解思想其实还是比较空洞,得刷几道题才能得其精髓。一般涉及到分治再涉及到排序这种,我一般采用sort(),不需要自己去写排序算法。原创 2021-02-20 10:45:44 · 134 阅读 · 0 评论 -
蓝桥杯---基础算法思想-哈夫曼编码(算法笔记16)
书上的哈夫曼编码写法,感觉没有之前《数据结构》这门课的小熊老师印象深刻。这里记录一下PPT的内容,同时参考书上内容。构造哈夫曼树演示:这里的树干上的01就是哈夫曼编码的内容,下面参考PPT定义那么对于这棵树的哈夫曼编码也就可以直接写出,上面书上例子的哈夫曼编码也可以直接写出。...原创 2021-02-20 10:44:44 · 269 阅读 · 0 评论 -
蓝桥杯---基础算法思想-贪心(算法笔记15)
以前觉得贪心是个算法,就像DFS这种有固定套路的,后来才发现,其实贪心也是一种算法思想,没有固定的模板,它常常与动态规划思想结合在一起。贪心算法的定义:个人理解:对于当前问题,找到问题的局部问题,并获得局部最优解,其次向着全局最优解拓展。贪心,顾名思义就是能多拿就多拿这种思想,每次找到满足局部条件的最好解。但这样并不意味着全局最优,这个还需要后期的优化。贪心的例子通过下面的书上例题来展示。用贪心有好处也有坏处,什么时候用贪心是需要牢记的,这个使用贪心满足的性质和动态规划差不多。总结两个就原创 2021-02-20 10:41:52 · 269 阅读 · 0 评论 -
蓝桥杯---二叉树3线段树(算法笔记14)
这是目前为止学的最难的一个东西,似懂非懂,云里雾里,雾里看花,花在笑我,我在笑我自己。暂时没弄懂,先占个算法笔记位置。原创 2021-02-20 10:47:06 · 166 阅读 · 2 评论 -
蓝桥杯---二叉树2--Treap树与Splay树(算法笔记13)
上个笔记学平衡二叉树的算法,书中详解两种Treap和Splay,本片讲Treap树这里的旋转思路:①左旋:先看初始的树,这个按照搜索树的方式进行建树(任何一个节点的左节点小于它,右节点大于它),那么对于左旋这个操作的意思就是将k的层次向左边提升一个层次,对于原树是第二层,向左提升就是到了根节点这一层。接着看k,k原来是o的右节点,也就是说k>o那么,当k左旋后,o变成了k的左节点(o<k),a原先是o的左节点,所以也保持不变。b原先是k的右节点,保持不变。再看x,由于是个二叉树,当k原创 2021-02-20 10:39:28 · 249 阅读 · 1 评论 -
蓝桥杯--二叉树1结构与搜索树(算法笔记12)
二叉树的结构能理解,关于遍历,搜索什么的在二叉树中的实现,之前在学数据结构的时候还是没怎么懂。二叉树系列是个大章节,看看书有十几页,这篇笔记先从二叉树的存储和遍历开始学。二叉树的存储结构(个人概述) 树在现实生活中是有多个分支的一种植物,由此类比到数据存储中的树,也就是说从根向上出发,会不断的有许多分支。二叉树的概念:每一个根节点最多只有两个子节点,也就是只有左右节点两个,再把根节点的左右节点作为子根节点进行沿拓。大致的图形如下:对于左边,每一个根节点只存在0个或2个子节点,这..原创 2021-02-04 13:18:59 · 233 阅读 · 2 评论 -
蓝桥杯--高级数据结构之并查集(算法笔记11)
并查集的几个基本操作图解:已知上面几个并查级,再来看题#include<bits/stdc++.h>using namespace std;const int maxn = 1050;int s[maxn];//集void init_set(){//初始化函数,每一个集位置的大小与元素的大小相同 for(int i=1;i<=maxn;i++) s[i] = i;}int find_set(int x){//查找x归原创 2021-02-04 13:15:59 · 191 阅读 · 0 评论 -
蓝桥杯--八数码问题优化:双向广搜与小结(算法笔记10)
http://blog.sina.com.cn/s/blog_8627bf080100ticx.html双向广搜详细参考上面的网址书上也是简单概述:从头和尾一起搜索,找有无交集。因为书上的DFS内容略少,由于之前自己学过DFS,也写过最经典的迷宫问题DFS,所以书上的DFS就不做过多的记录。这个小结尚可,故粘贴到下方,作为记录。...原创 2021-01-29 09:54:37 · 156 阅读 · 0 评论 -
蓝桥杯--BFS与A*问题(启发式搜索)(笔记系列9)
还是这个问题,只不过现在的输出是找出最短路径。按照之前的BFS,它是用来得到所能到达的瓷砖总数量,同时也能得到很多条到达终点的路径,也能求最短路径。因为这是方形的,点与点之间的距离是相同的,如果点与点之间的距离不一定相同呢?那么绕路就可能会更加的近(此时的绕路看似是经历了多个点,但是其实距离更近,脑补带权的图)。这种情况,BFS显然不适用。对于个图,从@出发到t(target),用BFS那么会走很多“冤枉路”,因为我的目标是找到@到t的最短路径,如果按照普通BFS,那么会遍历所有的点,时间复..原创 2021-01-29 09:53:04 · 291 阅读 · 0 评论 -
蓝桥杯--BFS-八数码问题(算法笔记8)
题目中输入初始状态和目标状态,返回最少的移动步数。这与迷宫问题的最短路劲有些许相似,但这里更多的是一种状态的思考,本题涉及到“康托展开”这个特殊的哈希函数。 由于BFS一般用队列来实现,其实看到这个题目,可以很容易看到几个状态。假设空白格子中数字为0,那么按照搜索的思路,肯定是四个方向搜索,那么0的位置可以向左上右下四个方向移动,移动过后的状态又是一个新的状态。接着从新的状态继续发散,这不就是BFS队列方法的的入队出队嘛,和上一讲中的BFS迷宫问题2的思路是一样的,这样一想,似乎并...原创 2021-01-26 21:07:38 · 528 阅读 · 0 评论 -
蓝桥杯--BFS(迷宫问题2)(算法笔记7)
关于迷宫问题的DFS,用数组的方式来做,在之前的博客上有写过。下面直接来看这道题目 书上这个是用队列的方式来写,由于之前对STL不是特别熟悉,所以对于队列的写法有些生疏。因此在此笔记中,通过书上代码实现,并加详细注释的方式来进行学习。 大致的思路就如上图所示那么下面是代码(含详细注释)如果要赋值粘贴代码:#include<bits/stdc++.h>using namespace std;char room[23][23]...原创 2021-01-26 21:04:29 · 131 阅读 · 0 评论 -
蓝桥杯---搜索技术之暴力与递归全排列2子集问题(算法笔记6)
子集与二进制数之间的关系:一个集合的子集有2的n次方个,对应n位二进制数。用CodeBlocks来实现输出的含义是,当集合元素个数为n时,其元素数值为0~n-1,它的子集打印输出。原创 2021-01-26 21:02:13 · 146 阅读 · 0 评论 -
蓝桥杯--搜索技术之暴力与递归全排列(算法笔记5)
之前参加蓝桥杯的时候一直听网上人说,这是暴力杯,之前以为的暴力杯就是穷举的思想,这下看了暴力求解的解释,发现也基本类似。 暴力求解法就是:列出所有可能的情况,从中寻找满足题目要求的方案数。暴力就是暴力在这所有可能的情况,这个看似简单其实又难,因为有些问题:迷宫问题。如何判断是否找过了所有的情况,也是一个难点。再比如,如果是一个全排列问题,那么暴力法的话,就是直接循环到底,列出所有可能,循环循环循环。这对时间要求很高,但是往往题目要求的时间很短,所以暴力求解法时常伴随的弊...原创 2021-01-26 21:00:17 · 2709 阅读 · 2 评论 -
蓝桥杯---STL常用库函数(算法笔记4)
下面是STL中几大常用的库函数sort两种定义方式区间左闭右开,从第一个数到倒数第二个数。下面是排列组合函数,在这之前先分清楚什么叫字典序也就是从以a,b,c~z这样的顺序进行排序。那么接下来就是对于处理排序问题的库函数next_permutation同样的,排列区间也是左闭右开。下面例子是对于序列a,b,c求除去abc以外的全排列,用next_permutation库函数实现就简单很多。那么知道了next_permutati...原创 2021-01-15 16:53:56 · 1226 阅读 · 0 评论 -
蓝桥杯---STL基本组件vector,stack,queue,list,set,map(算法笔记3)
STL是标准模板库的缩写。Vector在CodeBlocks中输入Vector对应的对象a加上一个“.”就会出现对应的函数调用,这些函数可以自己查找用,最好是把常用的记录清楚。常用的整理如下:CodeBolocks有个好处就是每次执行完一个程序会告诉你这个执行的时间,这个可以在比赛的时候作为自己调试的依据来判断是否超时。Stack栈关于头文件,一般来讲使用万能头文件#include<bits/stdc++.h>就包括了所有的头文件stack中不涉.原创 2021-01-10 22:25:00 · 213 阅读 · 0 评论 -
蓝桥杯---冒泡+快排+哈希排(笔记系列2)
对于此题以下分三种排序算法来解决冒泡排序: 先讲一下什么叫冒泡排序法。 现给一个有10个有效数据的数组a[11](从下标1开始到10),按照上面题目的意思,进行从小到大的顺序进行排序,再倒序输出(当然也可以从大到小顺序输出)。从第一个数开始,对它接下来的每一个数进行比较,如果它的后一个数比前一个数小,则交换,交换到最后则最后一个数必定是当前数组中最大的数。那么第二次进行比较的时候,由于最后一个数字已经确定是最大的,所以比较的次数应该减去1。那么一共有n个数,所以总...原创 2021-01-09 15:46:51 · 352 阅读 · 1 评论 -
蓝桥杯--判题与基本输入输出(笔记系列1)
OJ如何判题(根据测试数据只看输入输出) 上面为四种情况AC,TLE,PE,WA等,最好情况是AC。比赛的时候可以考虑用打表的方式来混分,即给定什么输入,输出什么,就直接cout即可。 输入输出函数 这里主要是考虑putchar和puts,getchar和gets的区别有个s说明是string类型,即为字符串类型 输出结束的方式(自己常用的为第二种其余两种写法要看懂) 一般根据题目给多少的数据量,就定义长度进行输入。或者直接给定几个参数...原创 2021-01-07 16:23:21 · 1007 阅读 · 0 评论