自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(28)
  • 收藏
  • 关注

原创 通讯录(链表实现)

通讯录链表实现

2022-07-03 23:46:36 1489 1

原创 算法文档(蓝桥杯,acm个人备赛文档)

算法模板

2024-04-12 20:01:54 990 1

原创 dp模板题(y总小迷弟)

有N种物品和一个容量为V的背包,每种物品都有无限件可用。第i种物品的体积是v[i],价值是val[i]。求解将哪些物品装入背包可使这些物品的费用总和不超过背包容量,且价值总和最大。现在忽略物体实际几何形状,我们认为只要背包的剩余容量大于等于物体体积,那就可以装进背包里。这里跟01背包不同的就是。说明:右半边的集合的表达式是在dp[i-1][j] 的基础上再加一个i物品。dp[i][j] 解释:从前i个物体中选择体积不超过j的物品的方案。dp[i][j] 解释:从前i个物体中选择体积不超过j的物品的方案。

2023-10-12 17:38:12 164

原创 vue父子间进行通信

父组件子组件

2023-07-27 14:51:43 166 4

原创 最小交换次数

每一次得交换都只能消除一对逆序对,所以最少得交换次数就是每次得交换都满足消除一对逆序对,即交换的次数就是逆序对得个数。

2022-07-17 16:36:08 902

原创 图论(prim,kruskal,Dijsktra三大算法)

全网易懂的算法

2022-06-13 00:25:50 847

转载 给出中序和前序如何求出后序

声明:本题解引用于洛谷Diamiko的题解,如有侵权,联系删除看题: 这里利用到一个最重要的知识点——二叉树遍历。前序遍历:根左右中序遍历:左根右后序遍历:左右根前序遍历是先遍历根节点,再遍历根节点的左右子树。那么,前序序列的第一个节点,一定是根节点。找到根节点,再确定根节点在中序序列中的位置,就可以分出左右两棵子树。这道题我们不需要建树,只要通过递归不断切割字符串就好了。字符串切割时应注意的问题那便是切割位置。STL的string类型自带切割方法substr,但搞不清参数就会导致WA甚至RE。首先我们搞清

2022-06-09 23:09:51 2899

原创 八大排序方法(难点:堆排序 归并排序 快速排序)

常见的排序算法

2022-06-02 21:57:21 1061 5

原创 双向BFS

百度百科的官方解释:宽度优先搜索算法(又称广度优先搜索)是最简便的图的搜索算法之一,这一算法也是很多重要的图的算法的原型。Dijkstra单源最短路径算法和Prim最小生成树算法都采用了和宽度优先搜索类似的思想。其别名又叫BFS,属于一种盲目搜寻法,目的是系统地展开并检查图中的所有节点,以找寻结果。换句话说,它并不考虑结果的可能位置,彻底地搜索整张图,直到找到结果为止。单向bfs下图为例 A 为 初始出发点遍历整个图1. A 入队,搜索左右相连的的节点A

2022-05-20 00:03:02 1448 2

原创 数据结构与算法

对于稀疏图来说,用Kruskal写最小生成树效率更好,加上并查集,可对其进行优化。Kruskal算法的步骤:1.对所有边进行从小到大的排序。2.每次选一条边(最小的边),如果形成环,就不加入(u,v)中,否则加入。那么加入的(u,v)一定是最佳的。并查集:我们可以把每个连通分量看成一个集合,该集合包含了连通分量的所有点(一个集合只有一个首领,在并查集里面称之为“代表元”)。而具体的连通方式无关紧要,好比集合中的元素没有先后顺序之分,只有“属于”与“不属于”的区别。图的所有连通分量可以用若干

2022-05-13 23:56:24 431 2

原创 阶层的近似值(斯特林公式)

公式 :Π的值:3.141592654e的值: 2.71828182846题目描述本题为填空题,只需要算出结果后,在代码中使用输出语句将所填结果输出即可。99 的阶乘等于:362880362880, 它的二进制表示为:10110001001100000001011000100110000000, 这个数字共有 1919 位。请你计算,99999999 的阶乘的二进制表示一共有多少位?思路:对求出来的值取log2(公式)即可,因为二进制是以2为标准#include &

2022-04-05 12:57:58 526

原创 水桶思想(蓝桥杯:交换瓶子)

题目描述有 N个瓶子,编号 1 ~ N,放在架子上。比如有 5 个瓶子:2 1 3 5 4要求每次拿起 2 个瓶子,交换它们的位置。经过若干次后,使得瓶子的序号为:1 2 3 4 5对于这么简单的情况,显然,至少需要交换 2 次就可以复位。如果瓶子更多呢?你可以通过编程来解决。思路 :按照数组下标进行排序,比较数组下标与其存储的数是否相同,如若不同则进行遍历找到与其下标对应的数字 两者进行交换代码如下:#include <stdio.h>int

2022-03-29 19:12:42 126

原创 生成回文数

题目描述本题为填空题,只需要算出结果后,在代码中使用输出语句将所填结果输出即可。所谓回文数就是左右对称的数字,比如:585,5885,123321...当然,单个的数字也可以算作是对称的。小明发现了一种生成回文数的方法: 比如,取数字 1919,把它与自己的翻转数相加: 19 + 91 = 110,如果不是回文数,就再进行这个过程:110+011=121 这次是回文数了。200 以内的数字中,绝大多数都可以在 30 步以内变成回文数,只有一个数字很特殊,就算迭代了1000 次,它还是顽固

2022-03-29 17:29:22 257

原创 二分法的(三种用法)

第一种情况:查找给定有序数组中是否含有这个数:这是最基本的二分法,当查找到满足条件的位置时则结束循环给定有序数组a[5] = {1,2,3,4,5},判断是否有num = 3 这个数,存在的话将他的数组下标返回,不存在则返回-1思路:直接采用二分法进行搜索,如果满足条件则跳出循环int fun(int x){ int l = 0 ,r = n -1 ; while(l <= r) { int mid = l+r >>1; if(..

2022-03-22 22:37:41 384

原创 习惯用ASCII解题(蓝桥杯:缩位取和)

常见ASCII码有 :'0' -> 48 , 'a' - > 97 , 'A' - > 65 , '\0' - >0题目描述在电子计算机普及以前,人们经常用一个粗略的方法来验算四则运算是否正确。比如:248×15=3720把乘数和被乘数分别逐位求和,如果是多位数再逐位求和,直到是 1 位数,得2 + 4 + 8 = 14 ==> 1 + 4 = 51 + 5 = 6;5×6而结果逐位求和为 3。5×6 的结果逐位求和与 3 符合,说明正确的可能性

2022-03-21 22:08:26 69

原创 前缀和的实现

二维前缀和:先进行预处理阶段,如和表示一个区间内所有的和?可以用一个图形来推出答案 可以看出预处理表达式为: s[i][j] = s[i][j-1] + s[i-1][j] - s[i-1][j-1] (重复的部分)如果给定一个区间求和的话如图所示:以(x1, y1)为左上角,(x2, y2)为右下角的子矩阵的和为:s[x2, y2] - s[x1 - 1, y2] - s[x2, y1 - 1] +...

2022-03-20 13:46:11 52

原创 除化乘的思想(埃及分数)

有时把除法的题目转化成乘法题可以使的题目的复杂度降到最低,不用讨论过多的可能性,以下面的题目为例题目:古埃及曾经创造出灿烂的人类文明,他们的分数表示却很令人不解。古埃及喜欢把一个分数分解为类似: 1/a + 1/b 的格式。这里,a 和 b 必须是不同的两个整数,分子必须为 1。比如,2/15 ,2/15 一共有 4 种不同的分解法(姑且称为埃及分解法):1/8 + 1/1201/9 + 1/451/10 + 1/301/12 + 1/20那么, 2/45一共有多少个不同

2022-03-20 12:55:19 317

原创 二进制的变形(蓝桥杯 : 李白打酒)

什么时候用这种思路,我给答案是:在题目给出只有两种变化情况时(下面会给出题目),范围确定时可以考虑采用 二进制的方式进行暴力枚举。在此之前,你要先了解 &运算符 它是用二进制数进行比较 如果都为1的话就是1 ,否则为 0 。 >> 运算符 : 将一个数的二进制 往右进行移动,例如 2 的二进制是 010,右移一个单位后是01。理解了这个就可以写这题了。题目给出有15次,那你就直接暴力枚举到 2 的 15 次方 - 1 就行了,需要注意的是他要求最后一位是 b , 用 1 代表店.

2022-03-17 20:28:48 74

原创 如何求 在 n x m 个方格中找出所有长方形,正方形的个数

思路 : 假设横向为n, 纵向为m 表格的长度为l,宽度为w,先考虑纵向 当 w = 1 l = 1 时 ,如图所示有三种可能 还是考虑纵向当 w = 2 l = 1时,如图所示有两种可能 依次类推,对这列考虑的时候个数与其宽度 之间有个关系式 , m - w+1, 接下来对行考虑也是这样 先固定w = 1 不变 ,依次考虑 l = 1 , l = 2 .... 可得 n-l+1则长方形的总个数为 (m-(w...

2022-03-16 11:23:25 750

原创 dfs专题(总结)

简介:DFS是深度优先搜索的英文缩写。其基本思路为:1、访问顶点v;2、依次从v的未被访问的邻接点出发,对图进行深度优先遍历;直至图中和v有路径相通的顶点都被访问;3、若此时图中尚有顶点未被访问,则从一个未被访问的顶点出发,重新进行深度优先遍历,直到图中所有顶点均被访问过为止。正文:以下例题基本来源于蓝桥杯真题,在写题中自我总结,在进入正题之前先看一道简单的例题《全排列问题》题目描述按照字典序输出自然数 11 到 nn 所有不重复的排列,即 nn 的全排列,要求所产生

2022-03-14 12:43:02 1375 1

原创 进制转化的拓展题

题目:小明用字母 AA 对应数字 11,BB 对应 22,以此类推,用 ZZ 对应 2626。对于 2727 以上的数字,小明用两位或更长位的字符串来对应,例如 AAAA 对应 2727,ABAB 对应 2828,AZAZ 对应 5252,LQLQ 对应 329329。请问 2019 对应的字符串是什么?思路:拿到这题会发现它的一个周期是26 ,A 代表1 B代表2 依次类推 ,z 代表的是26,这相当于 10进制中每个数都有对应的二进制,这题把它转化成 10进制转化为26进制 利用进制转换就可以了

2022-01-22 12:20:19 412

原创 理解螺旋矩阵

这个题目的思路如何出想呢,其实对于这种矩阵的题目比较好的方法就是数形结合,找出他的规律,博主我呢就画了个图(不要嫌弃博主的画画水平[哭]);我们可以看到规律挺明显的吧转圈圈就行了,定义一个数组把他对应的图上的位置的值给赋上去就行了吧,可是奇数的时候中间会有一个单独的,小伙伴们动动手 手动输入就行了(偶数的可以自己试一下哦)循环层数的话小伙伴们可以华哥图你会发现将 阶层数 / 2就是圈数了(c语言里的除法是保留整数哦)代码如下:#include<stdio.h>int mai...

2022-01-11 12:52:56 245 1

原创 矩阵的交换

第一行包含两个整数n和m,表示一个矩阵包含n行m列。 (1≤n≤10,1≤m≤10),共输入n*m个数,表示第一个矩阵中的元素。接下来一行输入k,表示要执行k次操作(1≤k≤5)。接下来有k行,每行包括一个字符t和两个数a和b,,t代表需要执行的操作,当t为字符'r'时代表进行行变换,当t为字符'c'时代表进行列变换,a和b为需要互换的行或列(1≤a≤b≤n≤10,1≤a≤b≤m≤10)。当t为别的字符时不需要处理主要的思路是:先定义一个二位数组,存放他要输入的数据,在定义一个字符变量储存下一步操作所对

2021-12-31 16:01:59 3249

原创 如何进行矩阵转换

矩阵转换其实就通俗的理解就是进行行和列的转换,难点是如何用c语言进行这个操作,我们可以定义两个数组,一个存放初始化的数组,另一个用来存放转换后的。将a数组的第一行第一列的复制给b数组的第一行第一列,然后将a数组的第一行第二列赋值给b数组的第二行第一列,依次类推就可以得到你的答案了#include<stdio.h>int main(){ int n , m ; scanf("%d%d",&n,&m); int a[n][m],b[m][n];/

2021-12-28 23:15:02 2713

原创 三大排序方式

一 ,冒泡排序 比较相邻的元素。如果第一个比第二个大,就交换他们两个。[1] 对相邻元素做同样的工作,从开始第一对到结尾的最后一对。在这一点,最后的元素应该会是最大的数。[1] 针对所有的元素重复以上的步骤,除了最后一个。 ...

2021-12-26 20:30:47 782

原创 运用坐标法输出几何图形

小伙伴们是不是被那种输出几何图案给折磨坏了呢?没关系我来教大家一个方法:坐标法在定义二维数组时,如:a[ i ][ j ],将 i 看成横坐标 , 将 j 看作纵坐标 那我们建立一个直角坐标系。i = 0和 j = 0 ,为坐标原点。画一条正比例函数就可以把二维输出分开。如果要输出下半三角我们直接输出 横坐标大于纵坐标的就行了#include<stdio.h>int main(){ int a[5][5]; //第一部分输入 for(int i = 0 ;i < 5;

2021-12-26 13:40:24 603 3

原创 如何求最大公约数

我们可以运用辗转相除法欧几里得算法是用来求两个正整数最大公约数的算法。古希腊数学家欧几里得在其著作《The Elements》中最早描述了这种算法,所以被命名为欧几里得算法。假如需要求 1997 和 615 两个正整数的最大公约数,用欧几里得算法,是这样进行的:1997 / 615 = 3 (余 152)615 / 152 = 4(余7)152 / 7 = 21(余5)7 / 5 = 1 (余2)5 / 2 = 2 (余1)2 / 1 = 2 (余0)至此,最大公约数为1

2021-12-25 22:44:51 686 1

原创 如何判断质数(素数)

素数又叫质数,指的是在正整数范围内,大于1并且只能被1和自身整除的数,定义一个for循环进行依次求余就行了知道了机理直接上代码吧

2021-12-25 21:42:28 526 4

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除