- 博客(312)
- 收藏
- 关注
原创 将一张100 元的钞票换成1 元、2元、5 元和10 元的零钱,每种零钞至少一张
还有一个问题就是要进行去重的,比如5元,我们可以选2,2,1,也可以选2,1,2,这样2的张数和一的张数都相同,输出时没有什么区别。这时采取的策略就是先枚举10,然后有一张后就枚举5,一直直到1,这样第一个结果就是1张10,一张5,一张2,83张1,然后再增加一张2,减少2张1,依次类推,就能避免重复解。将一张100 元的钞票换成1 元、2元、5 元和10 元的零钱,每种零钞至少一张,编写程序输出所有的换法,尽可能地提高算法效率。然后进行dfs,传入n和index,其中n表示当前剩余的金额。
2025-05-10 09:30:00
242
原创 二分法和牛顿迭代法解方程实根,详解
由于题目要求精度要到小数点后七位,所以判断条件可以为b - a < 1e-8,表示理论值,可以使用这串代码theo = 2 * cos(20 * M_PI / 180)根据中学知识,我们知道一个函数,比如题目里的这个,当x的取值满足这个函数为0,即满足题目条件,为实根。如果我们取x1为a,x2为b,那么如果fx1乘以fx2小于0,那么x1和x2之间至少有一个解。题目告诉了我们区间为1到3,我们取a为1,b为3,mid一直为a+b再除以2。设二分法的初始迭代区间为 [1, 3],牛顿迭代法的起点为4。
2025-05-10 09:00:00
514
原创 LintCode 18 · 子集 II详解
1,2,2]不重复的子集有[],[1],[2],[1,2],[2,2],[1,2,2]。读完题目,可以判断这是一道dfs的题目,下面的思路以样例2[1,2,2]为例子。给定一个可能具有重复数字的列表,返回其所有可能的子集。进行排序,使得相同的数字相邻排列,便于后续去重。:在遍历过程中,如果发现当前数字与前一个数字相同(开始遍历数组,选择是否将当前数字加入子集。),则跳过当前数字,避免生成重复子集。:在递归返回时,撤销当前的选择([0]的子集只有[]和[0]。),以便尝试其他可能的组合。
2025-05-04 10:00:00
415
原创 一个整数n可以有多种分划,分划的整数之和为n,在不区分分划出各整数的次序时,字典序递减输出n 的各详细分划方案和分划总数,详解
我解决这个问题的办法是,dfs的时候,除了传sum还要传上一个加的数字,这样在dfs的第一层,仍旧是dfs从6到1,而到之后的层就是dfs上一个加的数到1,这样就能满足题目的要求。
2025-05-04 09:30:00
226
原创 用1、2、3、4、5、6、7、8、9这9 个数字,填入等式的空格中使等式立,每个数字恰好只用一次,详解
最先想到的是一个纯暴力的做法,用两重for循环,第一重用来枚举那个二位数,从10开始,第二重用来枚举那个三位数,从100,开始,然后通过这个二位数乘以这个三位数可以得到一个数,如果得到的这个数是四位数,就检查此时这个9个数字是不是都用过了,如果这9个数都用了,那么此时就是一组解,输出即可。考虑到每个数字都只会使用一次,所以还可以优化一下,第一重for循环重12开始,而第二重重123开始。首先分析一下题目,一个两位数乘以一个三位数等于一个四位数。这样问题就解决了,好耶(*^▽^*)!2是判断用过的这个过程,
2025-04-19 10:00:00
320
原创 用动态规划求解设备更新问题(某人打算购买一辆新的小货车用于运货)
题目要求设计一种买货车的方案,使得5年内用车的总费用最少,我们肯定是在5年内的某一年卖出车,而在卖出车之前,每一年我们都需要缴纳每年的各种保险费,养护费等费用,并且这个费用是逐年提高的,而车随着使用年限的增多,卖出的价格也在不断变低。因为如果从前向后递推,未来的费用尚未计算,我们不清楚此时卖车还是不卖车对未来消费会产生的影响,如果从后往前递推,就可以根据已经算出的dp数组情况来反推当前的决策。时货车无法继续使用,必须出售并购买新车(但题目限制在5年内,无需考虑)。表示已用4年,第5年是第5年使用)。
2025-04-19 09:30:00
810
原创 RC-u4 章鱼子图详解
RC-u4 章鱼图的判断 对于无向图 G=(V,E),我们将有且只有一个环的、大于 2 个顶点的无向连通图称之为章鱼图,因为其形状像是一个环(身体)带着若干个树(触手),故得名。对于每组数据,如果给定的图里只有一个章鱼子图,则在一行中输出 Yes 和章鱼子图环的大小(及环中顶点数),其间以 1 个空格分隔。否则,则在一行中输出 No 和图中章鱼子图的个数,其间以 1 个空格分隔。输入第一行是一个正整数 T (1≤T≤5),表示数据的组数。),表示给定的无向图有 N 个点,M 条边。
2025-04-11 09:30:00
668
原创 给定一个正整数n,输出如下 n * n “之字形”方阵
我首先想到的是一个纯暴力的做法,可以开一个特别大的数组,然后初始化第一个是1,如果下一个位置合法,就到那个位置放上它的加一,而且在奇数次时是从左下加到右上,而在偶数次的时候是从右上加到左下。看了一下那个选做,如果是这样的纯暴力,选做的那题也可以这样做。又想了一下,两点确定一条直线,可以让x1y1代表第一个点,x2y2代表第二个点,第一个点往下,触底就往右,第二个点往右触底往下,当两点重合,循环就结束。要求输出这样形状的数字矩阵,它是斜着不断加一,然后每次开始加一的边不一样,一次是下边一次是上边。
2025-04-11 09:00:00
321
原创 Floyd算法求每对顶点之间的最短路径,C++详解
Floyd算法,也称为Floyd-Warshall算法,是一种用于求解图中所有顶点对之间的最短路径的经典算法。它适用于有向图和无向图,并且可以处理带负权边的情况(但不能处理包含负权回路的图)。Floyd算法的时间复杂度为O(n^3),其中n是图中顶点的数量。
2025-04-04 10:30:00
747
原创 广场上一队士兵,蛮力法和数学建模法
系数是9×5×7=315,需要计算315 mod8的值:315 ÷8=39×8=312,余3,所以315≡3 mod8。系数是8×9×7=504,504 mod5:504 ÷5=100×5=500,余4,所以504≡4 mod5。求4的逆元mod5,因为4×4=16≡1 mod5,所以逆元是4。分析了一下题目,也就是说最少的可能人数,它被10除以余下a,被9除以余下b,依次类推被2除以余下j,也就是说这个人数它减去a之后能被10整除,减去b后能被9整除,进行蛮力枚举,就能得到最小的这个人数。
2025-04-04 10:00:00
460
原创 蓝桥杯python练习——数字串个数
使用容斥原理,不含3或7的总种类数即为不含3的8^10000加上不含7的8^10000减去不含3也不含7的7^10000种。请问满足题意的数字字符串有多少个?这个数字会很大,你只需要输出其对 109+7109+7 取余后的结果。小蓝喜欢数字 33 和 77,所以数字字符串中必须要有 33 和 77 这两个数字。逆向思维一下,可以用总的可能种类数9^10000减去不含有3或7的种类数。小蓝不喜欢数字 00,所以数字字符串中不可以出现 00;不出现0,即每一位可能是1到9。
2025-03-24 10:30:00
441
原创 蓝桥杯python练习——穿越时空之门
作为小蓝的助手,你的任务是帮助小蓝计算出,在这 20242024 位勇者中,有多少人符合穿越时空之门的条件。我们可以联想一下在计算机组成原理或者是c语言课程里面讲过的进制转化,题目给我们一个十进制,如果要转化为二进制,可以不断除以二,有余数则写1,没有就写0,最后得到二进制结果。可以先让5%2,结果为1,然后5//2后变为2,2%2结果为0,然后2//2结果为1,1%2结果为1。在四进制的领域里,力量的转换规则相似,变成了力量数值的四进制表示中各数位之和。对于5来说,二进制为101,各位数之和怎么求呢。
2025-03-24 10:00:00
663
原创 简单背包问题详解——炼码92 · 背包问题
但对于二维dp来说,先遍历背包容量,再遍历物品也是OK的,因为dp是由它上面那个元素和它左上角的元素得到的,无论是按行逐行遍历,还是按列逐列遍历,都可以得到正确的dp数组。首先先思考这道题的一个暴力解法,对于一个物品,它只有取或者不去两种可能,这样进行dfs进行递归,记录下每种情况的最大值,总的时间复杂度就为2的n次方。所以递推公式为:dp[i][j] = max(dp[i-1][j],dp[i - 1][j - weight[i]] + value[j])不放物品i表示的最大价值为dp[i-1][j]
2025-03-09 10:30:00
801
原创 链表求和问题——炼码221 · 链表求和 II
最开始我的想法是将两个链表转化为数字,然后相加,最后再将相加的那个值转化为字符串,但是当链表过长时,会导致溢出,链表转化出来的数字超过了int和longlong的范围。然后进行了更改,不将链表转化为数字,而是转化为字符串然后再进行大数相加,再将最后得到的字符串转化为链表即可。假定用链表表示两个数,其中每个节点仅包含一个数字。直接遍历链表,将每个节点的值拼成字符串,保留原始高位顺序(例如。排列,请设计一种方法将两个数相加,并将其结果表现为链表的形式。按照字符串顺序直接创建链表,保持高位在前。
2025-03-09 10:00:00
146
原创 蓝桥杯python练习——卡片,跑步锻炼
现在小蓝手里有 00 到 99 的卡片各 20212021 张,共 2021020210 张,请问小蓝可以从 11 拼到多少?思路为,从1开始不断加一,计算每个值1的数目,当累计到2021的数目时,就退出循环,输出此时循环到的数就是答案。小蓝准备用这些卡片来拼一些数,他想从 11 开始拼出正整数,每拼一个,就保存起来,卡片就不能用来拼其它数了。例如,当小蓝有 3030 张卡片,其中 00 到 99 各 33 张,则小蓝可以拼出 11 到 1010,小蓝有很多数字卡片,每张卡片上都是数字 00 到 99。
2025-02-26 10:30:00
406
原创 蓝桥杯python练习——数字三角形
尝试后发现,当行数为偶数时,只有最后一行中间那两个数才能走到,而当行数为奇数时,只有中间的那个值才能走到,所以设置一个flag数组,最初将最后一行能走到的设置为1,相加时只有存在一个1才相加,否则设置为0简化运算,详情见代码。从倒数第二行开始往上遍历,从左往右,让当前位置的值为它下面和下面右边的最大值加上它自己,依次类推,最后dp【1】【1】就是所求值。输入的第一行包含一个整数 N (1≤N≤100)N (1≤N≤100),表示三角形的行数。数字三角形上的数都是 0 至 100 之间的整数。
2025-02-26 10:00:00
857
原创 快速排序、大根堆排序比较,C++详解
具体的过程为:先将数组的第一个元素作为pivot,然后使得low指针指向数组中的第一个元素,hight指向数组中的最后一个元素,然后看hight指向的元素,如果小于pivot则与hight指向的元素交换,否则继续向左移动,如果元素发生了交换,就让low指针再向右移动比较指向的值与pivot的大小,如果更大,就与hight指向的元素交换位置,否则继续向右移动。例如,当数组已经有序,而每次选择的枢轴都是数组的第一个或最后一个元素时,会导致每次划分都极不平衡,从而时间复杂度变为O(n²)。
2025-02-22 15:19:06
803
原创 蓝桥杯python练习——单词分析,成绩统计,门牌制作
我最开始想的是使用一个字典,然后遍历字符串,将所有出现过的字符加入到字典中然后设置初始值为0,再第二次遍历,检测到一个字符就将该字符对应的字典数加一,然后设立max为0,遍历字典找到出现次数最多的值,最后再遍历一次字典,发现次数为max则放入ans列表,排列ans列表后,输出列表的第一个值和max即可。思路为,枚举1到2020,再将其强制转化为字符串类型,使用字符串里的count函数求出字符2的数目,累加起来即可,结果为624。接下来 nn 行,每行包含一个 0 至 100 的整数,表示一个学生的得分。
2025-02-22 15:18:24
741
原创 数据库,DCL语句详解
DCL 代表 Data Control Language(数据控制语言),是 SQL 的一部分,用于控制数据库的访问权限和安全性。
2024-12-08 09:00:00
536
原创 二叉排序树的建立,查找,插入,删除,C++详解
删除操作也按预期执行,当删除具有两个子节点的节点15时,算法选择了右子树中的最小节点来替代被删除的节点,确保了树的结构仍然满足二叉排序树的要求。而对于二叉排序树来说任何节点的键值一定大于其左子树中的每一个节点的键值,并小于其右子树中的每一个节点的键值。2如果要插入的数比当前结点大,就往当前结点的右子树走,否则就往当前结点的左子树走,直到末端,如果比末端的这个元素小,就成为它的左孩子,否则就成为它的右孩子。如果当前结点比要找的数小,就往当前结点的右子树找,否则就往当前结点的左子树找。
2024-12-08 08:30:00
1851
原创 数据库,DQL(select)语句详解(基本,条件,聚合,分组,排序,分页)
DQL 代表 Data Query Language(数据查询语言),是 SQL(Structured Query Language,结构化查询语言)的一个子集,主要用于从数据库中检索数据。DQL 的主要语句是。where是分组之前就进行过滤,不满足where不分组,having是分组后对结果进行过滤。语句,它允许用户从一个或多个表中查询数据,并可以使用各种子句来过滤、排序和聚合数据。where不对聚合函数进行判断,having对聚合函数进行判断。ASC是升序,DESC是降序。将每列数据作为一个整体。
2024-12-07 09:00:00
297
原创 拓扑排序,C++详解
由于用的是邻接表存储,所以有三个结构体,一个是头结点,一个是单位结点(也就是跟在头结点后面的)还有一个我命名为额外信息,存储的是顶点个数,边的个数,以及用一个数组存下来了所有的头结点,由于本题比较特殊需要用到每个顶点的入度,所以添加一个入度数组。4每次出栈的时候count都会加一,最后比较count与顶点数的大小,如果count更小,说明没有让所有顶点都入栈,即图中存在回路。3出栈栈顶元素,然后根据邻接表遍历它的后续结点,让这个顶点指向的顶点入度减一,此时如果入度为0则让它入栈。再根据邻接表初始化。
2024-12-07 08:30:00
629
原创 数据库,DML(insert,update,delete)语句详解
DML是SQL(Structured Query Language,结构化查询语言)的一部分,主要用于对数据库中的数据进行操作。语句用于向表中插入新记录。你需要指定要插入的列及其对应的值。如果省略列名,则需要提供所有列的值。
2024-12-06 10:00:00
394
原创 深度优先生成树,广度优先生成树,C++详解
由于用的是邻接表存储,所以有三个结构体,一个是头结点,一个是单位结点(也就是跟在头结点后面的)还有一个我命名为额外信息,存储的是顶点个数,边的个数,以及用一个数组存下来了所有的头结点。我这里使用的比较笨的办法,一个头结点一个头结点的初始化,由于有10个结点所以代码量比较大。2访问当前结点的下一个结点,如果没走过(visit为false)就对它进行dfs。2只要队列不为空,先拿出队头元素,访问它的每一个单位结点,只要那个结点没走过就入队。按照教材里给的图的形状将树输入到程序中,从而生成一个图。
2024-12-06 09:30:00
1418
原创 稀疏矩阵的转置详解(三元组表)
在m×n 的矩阵中,有t个非零元。,将原始三元组表里j最小的那组数据存入转置后的那个三元组表,随着循环不断进行,转置后的三元组表就完成了,具体过程可以看我的代码(有详细注释)稀疏矩阵的应用:设计算法并编程实现用三元组顺序表解决稀疏矩阵的转置问题,用2种方法实现并分析比较2种算法的时间和空间复杂性。进行这个矩阵的转置,难点在于,转置前三元组表从上到下行数不断增加,转置后也应当是从上到下行数不断增加。cpot[nu]:初始值表示矩阵A中某列的第一个非零元素在B中的位置。转置后矩阵B的行数为转置前矩阵A的列数。
2024-11-22 09:00:00
584
原创 非递归实现二叉树的后序遍历,详解
若栈顶结点的标志flag=1,则表明栈顶结点的左子树已遍历完毕,将flag修改为2,并遍历栈顶结点的右子树;若栈顶结点的标志flag=2,则表明栈顶结点的右子树也遍历完毕,输出栈顶结点。2.如果当前结点为空,就返回上一个结点,如果此时右结点为空就表示这是个叶子结点,我们就可以直接输出它的data。4.如果右结点不为空,就更新当前结点的flag为2,入栈,然后进入它的右节点。,当flag为2时也可以输出当前结点,这时输出的结点不是叶子结点,是已经被遍历过一次的结点。二叉树后序遍历的非递归算法。
2024-11-22 08:30:00
1648
原创 求二叉树结点总数,求ASCII码最大的结点的层次,详解
(1)假设一棵二叉树为A(B(D,E(G,)),C(,F(,H))),设计一个算法求此二叉树中结点总数并实现。由于先序遍历是一个递归的遍历,如果要找里面的最大值,那么使用一般局部变量和全局变量都不太合适,于是我使用了静态局部变量,确保不会出现定义模糊的情况。同样是一个递归的思路,但没上一个好理解,可以边看代码边理解。遍历上述二叉树,求出二叉树中结点ASCII码值最大的结点和该结点的层次(假设根结点层次为1)。这里使用的是赋值的方法,朴素的搭建起题目要求建的那棵树。采用递归的方法求出二叉树的结点总数。
2024-11-19 09:00:00
301
原创 DFS(深度优先遍历)邻接表 详解
最后就是关键的DFS了,题目要求为从结点3开始遍历,所以先输出3,由邻接表,结点3后一个为结点0,因为0结点尚未走过,于是转化到v0头结点,输出0,v0头结点的后一个1,恰好1也没走过,于是转换到v1,输出1,v1头结点之后为0,已经走过,于是往后到2,尚未走过,于是转换到v2,输出2,v2之后为1,已经走过,于是往后到3,也走过,继续到4,没有走,于是转换到v4,输出4,再遍历v4后的结点发现都走过了,于是结束dfs。结合图片模拟过程理解邻接表的DFS。dfs的结果就为:30124。
2024-11-19 08:30:00
877
原创 表达式求值问题(中缀转后缀,对后缀求值)详解
表达式求值问题。这里限定的表达式求值问题是: 用户输入一个包含“+”、“-”、“*”、“/”、正整数和圆括号的合法数学表达式,计算该表达式的运算结果。算术表达式求值过程是: STEP 1:先将算术表达式转换成后缀表达式。STEP 2:然后对该后缀表达式求值。在设计相关算法中用到栈,这里采用顺序栈存储结构。
2024-11-15 09:00:00
946
原创 火车车厢重排问题,C++详解
火车车厢重排问题实验说明:转轨站示意图如下:火车车厢重排过程如下: 火车车厢重排算法伪代码如下: 这是一看就是一道模拟题,主要是根据题目给出的伪代码实现对应的过程,要求比较强的代码复现能力与调试能力。 一共需要4个队列,一个是入轨的队列。还有三个缓冲队列,具体过程为先拿出入轨队列的第一个元素,如果是1的话就说明要出队作为结果,如果不是就要放入缓冲队列,然后再从入轨里拿队员。 关键来了,后面要找出缓冲队列中队尾元素小于我们拿出来的这个值的元素,然后找到这几个元素的最
2024-11-15 08:30:00
684
原创 实现一元多项式求和(数据结构实验项目2)
输入数据时会先输入p和q有的项数,然后输入p和q每项的系数和指数。q为:7+x+3x2+6x3。第二组数据:p为:3+4x+6x2+3x3。输入计算机,计算它们的和并输出计算结果。第一组:p为:5+3x+4x2+3x3。这里尝试两组一元多项式作为示例。把任意给定的两个一元多项式。
2024-11-08 09:30:00
429
原创 队列实现约瑟夫环(数据结构实验报告1)
约瑟夫环问题:设编号为1,2,3,……,n的n(n>0)个人按顺时针方向围坐一圈,m为任意一个正整数。从第一个人开始顺时针方向自1起顺序报数,报到m时停止并且报m的人出列,再从他的下一个人开始重新从1报数,报到m时停止并且报m的人出列。要求设计一个程序模拟此过程,对任意给定的m和n,求出出列编号序列。有n个人,围绕一圈循环报数,报到m的人出列,剩余人继续循环报数,直到所有人都出列。从队头开始报数,报数到m的人就出队,报数不是m的人就移动到队尾。输入n和m,输出报到m的人的编号。输入8个人,报到4的人出列。
2024-11-08 09:00:00
446
原创 SQL 数据定义语言(DDL语句)
对于这个char,定长字符串,即使只有第一位存放数据,他也会占用10个空间,另外的9个位置会使用空格进行补位。ALTER TABLE 表名 ADD字段名类型(长度)[COMMENT注释] [约束]MySQL中的数据类型有很多,主要分为三类:数值类型、字符串类型、日期时间类型。字段1 字段1类型[COMMENT 字段1注释],字段2 字段2类型[COMMENT 字段2注释],字段3 字段3类型[COMMENT 字段3注释],字段n字段n类型[COMMENT 字段n注释],
2024-10-30 10:00:00
748
原创 HTTP协议基础
HTTP请求头(Request Headers)和响应头(Response Headers)是HTTP消息的一部分,它们携带了客户端和服务端之间的元信息,这些元信息有助于控制请求或响应的行为。返回HTTP响应:服务器返回一个HTTP响应,包括状态码(如200表示成功,404表示页面未找到等)、响应头(如Content-Type指明响应内容的类型,如text/html代表HTML文档)以及响应主体(即实际的网页内容)。由于这样的重定向是临时的,客户端应当继续使用原有地址进行以后的请求。
2024-10-22 10:00:00
717
原创 使用队列走出迷宫,BF算法与KMP算法(数据结构作业05)
有目标串s=“bbcgabcdabgabcdabcdabde”和模式串t=“abcdabd”。用KMP算法进行模式匹配,共经过几次比较?上机实现完整程序代码和运行结果。用BF算法进行模式匹配,共经过几次比较?上机实现完整程序代码和运行结果。利用顺序队求一个从指定入口(1,1)到出口(4,2)的路径。有一个迷宫如下图所示。
2024-10-15 09:00:00
305
原创 PHP代码调试(vscode+xdebug+phpstudy)
第一步是配置php的环境变量,csdn里有很多文章可以直接搜索即可了解怎么配置,大概就是将phpstudy里的php文件位置复制到环境变量里,最后使用cmd检查是否配置成功。将php的路径放到此处,该路径就在小皮的Extensions里面。在vscode左侧的拓展处搜索可下载这个php debug。创建这个文件,注意端口号要与小皮里的一致。使用记事本打开配置文件里的php.ini。再点开phpdebug里的json。再点击它设置里的扩展组件。点开文件,首选项里的设置。点开vscode里的调试。
2024-10-09 09:00:00
2693
3
原创 PHP简单登录系统
这是注销过程的第一步,确保会话中的所有数据都被清除。函数会删除服务器端与会话相关的文件或数据库记录,但不会删除客户端的Cookie(这就是为什么前面需要使用。:这是一个属性,用来关联标签与具体的表单控件。函数创建一个过期的Cookie,其名称与会话名称相同,有效期设置为过去的某个时间点(函数开始一个新的会话或者重新启动一个已存在的会话。:这是一个标签元素,用于为表单中的输入字段提供描述性的标签。这行代码开始一个新的会话或者恢复一个已经存在的会话。:定义了两个输入字段,一个是用户名,一个是密码。
2024-10-08 10:00:00
1397
原创 PHP 表单基础
当处理 HTML 表单时,PHP 能把来自 HTML 页面中的表单元素自动变成可供 PHP 脚本使用。预定义的 $_REQUEST 变量包含了 $_GET、$_POST 和 $_COOKIE 的内容。1.使用 PHP trim() 函数去除用户输入数据中不必要的字符 (如:空格,tab,换行)。预定义的 $_POST 变量用于收集来自 method="post" 的表单中的值。预定义的 $_GET 变量用于收集来自 method="get" 的表单中的值。首先,我们需要在HTML中创建一个下拉菜单。
2024-10-08 09:30:00
925
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人