- 博客(51)
- 收藏
- 关注
原创 闫式Dp分析法(一种求解动态规划问题的思路)
阅读完上述的闫式Dp分析法后,倘若你有所领悟,你便能发现动态规划之所以省时间的原因是,它优化了暴力解决方法。倘若使用暴力方法求解背包问题,那么由于一共有种物品的组合方案(每种物品有选与不选两种选择),对于每一个方案需要求算它的体积之和以及价值之和,那么总共的时间复杂度为.这个是一个很糟糕的时间复杂度,即使N = 1000,暴力解法的计算次数已经高达次。一般电脑C++每秒求算即该问题基于暴力解法的最好求算时间是秒,大概是亿年!!!
2023-12-21 21:20:37
322
原创 BFS:八数码问题求解
本博客先解释了BFS的存储队列节点的抽象含义,将每一个节点看作一种状态,并从状态存储、状态记录、状态拓展等角度解答了BFS算法如何解决遍历问题。紧接着,我们借助BFS算法的状态处理方法给出了八数码问题的求解思路。我们以字符串存储了八数码的每一种状态,每一种状态记录{s,pos,step}三个分量,借助st映射记录新拓展出的状态,并于代码中给出状态拓展的方法。实际上,八数码问题只是抽象BFS问题的一种实例化,当我们判断一个问题是否属于BFS问题时,需要判断问题是否存在初始状态与最终状态?
2023-12-17 17:29:23
329
原创 KMP算法详讲(问题导向,通俗易懂)
KMP算法是一种高效的字符串匹配算法,相比于BF算法的时间复杂度为O(n*m),它的时间复杂度降低到了O(n+m)。这种算法的高效性在于它利用了。然而,对于初学者来说,KMP算法并不容易理解。因此,本文将采用问题导向的方法,并结合配图,以通俗易懂的方式解释KMP算法。
2023-11-16 13:23:22
238
原创 解决电脑记事本打不开的问题
当记事本的保留数目过高时,下次打开就要加载大量的记事本,导致内存供应不足,因此就打不开了,所以在不需要记事本时要学会。电脑记事本打不开的原因也许是。
2023-10-08 07:19:30
2471
原创 Go:关于‘fresh‘ 不是内部或外部命令,也不是可运行的程序问题的解决方案
本文提供关于'fresh' 不是内部或外部命令,也不是可运行的程序问题的解决方案!
2023-09-01 08:13:20
1201
4
原创 Go在安装Gin时出现Failed to connect 报错问题的解决方案(已解决)
本文提供在Go中安装Gin包时出现Failed to connect to github.com port 443: Timed out问题时的解决方案
2023-08-31 17:35:45
1385
原创 深度学习阶段性回顾
深度学习的关键组成部分是神经网络,而神经网络具有深层次的网络结构,是一种依靠大量数据样本,通过正向传播、逆向传播算法对数据进行训练与学习,进而提取复杂数据特征与模式,从而完成指定任务的计算模型。正如小孩子通过体察世界、阅读书籍等方式认知世界,机器的学习也需要借助学习原料,这些原料就是大量的样本数据。
2023-08-10 18:49:15
834
原创 关于卷积运算对于图像操作的思考
图像操作大部分涉及卷积运算,卷积操作的原理是:卷积核(常为一个二维矩阵)作用于图像矩阵,进而对其产生某种效果,这种效果展现在新的图像矩阵上。例如,灰度图像的常见腐蚀操作的卷积运算规则是,结构元素与对应图像的像素点相乘,并取结果的最小值作为结构元素区域中心位置的最小值,这便是一种卷积运算规则。在研究卷积运算效果的过程中,卷积核元素特点与卷积运算规则都是需要根据具体任务与应用场景而设计的,此处大有讲究,需要研究者根据具体任务好好钻研,从而设计出有利于解决实际问题的卷积核与卷积运算规则。
2023-08-09 21:38:47
106
原创 tensorboard无法显示数据的几个原因与解决方案【已解决】
本博客记录本人在学习tensorboard时关于浏览器无法显示数据问题的解决方案。该问题也算是折磨本人长达3个小时,我也相信有不少人为此感到苦恼,希望本文能给你提供某些帮助。
2023-08-07 09:59:49
6826
4
原创 多重背包的单调队列优化
本博客讲解单调队列优化多重背包,知识点涉及背包更新的特性、遍历方式与原因、最大值更新的方式、队列头元素的含义、队列元素如何更新、代码实现以及算法复杂度分析。博客内容比较详细丰富,讲解比较全面,照顾新人,希望对大家有帮助。
2023-03-18 10:09:07
2135
3
原创 二分查找与判定树
二分查找的要求是,查找表为采用顺序存储结构的有序表,但现实中的有序性不只是体现在数字的比较上。二分查找的过程可以用一棵二叉树来描述,若用二叉树构造序列[low,high]的判定树,那么二叉树的根结点的存储值为序列[low,high]的中间元素的位置mid,而二叉树的左子树构造序列[low,mid-1]的判定树,右子树构造序列[mid+1,high]的判定树。以下构造序列[1,10]的判定树,如图所示,查找的第一个下标必定为5,如果key值较arr[5]小,那么第二个查找的下标必定为2,否则为8。
2023-03-05 19:14:09
3331
2
原创 Javascript周学习小结(初识,变量,数据类型)
本博客介绍了JS的三大书写方式,三个输入输出语句,变量的语法、初始化以及其他注意事项和变量的命名规范;同时简单介绍了五种简单数据类型,重点讲解了数字型与字符串型以及数字型的转化。
2023-03-05 10:03:16
567
3
原创 排序算法--sort 的自定义排序规则
C++的STL里面提供了sort排序函数,使用起来会很方便,但其自定义数据类型需要自己定义排序规则,本文介绍了两种排序规则。
2023-02-26 14:39:20
477
原创 快速排序+快速定位
如何实现快速排序算法?如何实现快速定位?快速排序算法采用了分治法以及递归作为解决问题的思想。在计算机科学中,分治法是一种很重要的算法。字面上的解释是“分而治之”,就是把一个复杂的问题分成两个或更多的相同或相似的子问题,再把子问题分成更小的子问题……直到最后子问题可以简单的直接求解,原问题的解即子问题的解的合并。
2023-02-26 14:10:37
680
3
原创 蓝桥杯刷题——车的放置
(假设有num辆车没摆放(包括当前这辆车),一共有n行,)每一辆车所能摆放的行数范围,从其起始行row,到终止行n+num-1;1.新车需要摆放在前一辆车的下一行以下(因为辆车交换摆放位置不会增加摆法的总数);,找到一个没有其他车的列,将该车摆放在该列上并做好标记,紧接摆放下一辆车。,依次将num辆车摆放在n*n棋盘中,需要。当该车取消摆放时,务必取消标记。
2023-02-22 08:45:09
229
原创 二维数组如何传参
C语言初学者可能常常困惑于当二维数组作为函数参数时,该如何传参?为什么int**不能作为int arr[10][10]的参数类型?为解此惑,见如下解释,想迫切知道答案的直接看文章尾部的总结。
2023-02-14 13:00:27
292
2
原创 关键路径——AOE-网
与AOV-网有所不同,AOE-网是以顶点存储事件,以弧表示活动的带权的有向无环图权值表示活动的持续时间。一般的工程中除了子工程之间存在着先决关系外,每一项子工程或活动的完成都需要特定时间。各个子工程的完成时间参差不齐,为了统筹一个工程的人力与物力资源更好的分配于各项活动,产生了用于评估工程用时的AOE-网的关键路径算法。总之,AOE-网的关键路径算法用于评估整个工程的持续时间以及判断哪些活动是影响整个工程的关键。
2023-02-14 11:36:29
2439
原创 拓扑排序(1)——AOV-网
排序实现过程为:先构造AOV-网,输入AOV-网的所有顶点的入度(对于邻接表而言,求一个顶点的入度与求所有顶点的入度一样,都是需要扫描e条边);紧接着,先输出栈顶元素s,将用topo记录顶点s的下标,再将以顶点s为弧尾的弧删除,表示顶点s的所有邻接点adjvex的入度将1,即对应的indegree值减1,直到栈S为空,判断出栈元素个数是否等于AOV-网的顶点个数。拓扑排序旨在将AOV-网中的所有顶点都输出在一个线性序列中,若顶点v1是顶点v2的先决条件,那么顶点v1在排序中必定出现在顶点v2的前面。
2023-02-13 08:58:33
919
2
原创 最短路径——弗洛伊德算法
任意一个顶点都有可能作为其他任意两顶点间最短路径的中转点,以更新两顶点间的更短路径,且中转点的顺序交换没有影响,通过依次使n个顶点充当一次中转点以求解任意顶点间的最短路径。
2023-02-11 12:09:37
990
4
原创 最短路径——迪杰斯特拉算法
日常生活中常常涉及最短路径问题,如在一个城市交通网中,如何选取从起点到达终点的路径,才能使这一趟旅程的路程最短?或所需时间最少?或所需交通费用最低?诸如此类问题都可以抽象为求解图的最短路径问题。我们把图的顶点表示为城市的交通站点,边表示交通站点间的路径,边的权值表示为交通站点间的路径的距离、所需时间或费用等等,则上述问题放映到图上就是,如何求解图顶点间权值之和最小的路径。
2023-02-10 20:25:21
3078
3
原创 最小生成树——Kruskal算法
见链接:http://t.csdn.cn/yI3mq Kruskal算法的思路比较直接,需将连通网中的全部边按权值的大小由低到高排序,然后逐一将较小权值边加入到最小生成树的边集TE中即可。1. 选取当前权值最小的边(u,v),判断该边的加入是否会形成回路。若否,则将(u,v)加入到TE中。2. 继续选取当前最小的边,重复步骤(1),直到已加入TE的边的个数等于n-1为止。 构造辅助数组Assistarr[Marc],存放连通网的边并将边依据权值的大小从低到高排序;构造辅助数组setvex[Mvn
2023-02-09 20:12:12
538
原创 最小生成树——prim算法实现
在一个连通网的所有生成树当中,各边权值之和最小的那棵生成树就叫做连通网的最小代价树,简称最小生成树。该算法也称为“加点法”,即每次都选取一条权值最小的边(u,v)加入到最小生成树中,其中,使v加入到U中并且更新U到V-U各个顶点的最小权值边;重复上述步骤,直到V=U为止。
2023-02-09 17:49:09
2467
原创 图的遍历——深度优先遍历与广度优先遍历
图的遍历需要定义一个辅助数组以记录某个顶点是否曾被访问,其遍历方式分为深度优先搜索与广度优先搜索。深度优先搜索符合递归的特性,广度优先搜索需要一个队列结构以实现图的层序遍历。这两种遍历方式的时间与空间复杂度在所选用图的存储结构相同的情况下相同,也就是所搜索算法的复杂度与搜索方式本身无关,与图的存储结构有关。一般而言,稠密图选用邻接矩阵存储,稀疏图选取邻接表存储。
2023-02-08 09:00:07
6485
7
原创 图的存储结构——十字链表
回忆邻接矩阵与邻接表的存储结构,它们都不便于求顶点的出度与入度。为了解决上述两者求出入度的局限性,在此引入十字链表,它可以看成邻接表与逆邻接表的结合,方便求解顶点出入度与获取顶点的出入度边。
2023-02-07 09:34:58
8893
原创 对线性表推广的理解
顺序存储结构常见于数组,其内存空间大小预先分配,固定不变,增删难度大,易造成空间的浪费或者溢出,但优点是可以通过下标实现随机访问的效果。
2023-02-06 10:35:23
300
原创 图的存储结构——邻接表
回忆邻接矩阵的顺序存储结构,其内存空间预先分配,容易导致空间的溢出或者浪费。为了使增减结点方便,提高空间利用效率,引入链式存储法——邻接表。
2023-02-06 09:29:20
7625
3
原创 图的存储结构——邻接矩阵
假设i,j分别作为二维数据的横坐标与纵坐标,那么很显然,i,j两个下标恰好可以表示图的两个顶点编号(顶点编号从0开始)。在人为规定的前提下,二维数组中的某元素的数值即可表示顶点之间有无边的存在,如在有向图中arr[i][j]==0表示i到j无弧,否则arr[i][j]==1表示有弧。这种二对一的关系与图的点边关系相类似。
2023-02-05 01:17:34
1347
原创 用C++实现矩阵计算器
还在抱怨线代计算繁杂?快来写一个属于你自己的计算器吧!用C++实现,内含矩阵连加连乘、求矩阵转置、求方阵的行列式与其逆矩阵。
2022-12-13 14:54:53
1829
4
原创 计算两个超大数之和
由于a和b都比较大,所以不能直接使用语言中的标准数据类型来存储。对于这种问题,一般使用数组来处理。 我们可以定义int数组A,A[0]代表a的个位数组,A[1]代表a的十位数,依次类推;以同样的方式定义int数组B,当a+b时,定义int数组C,C[0]=A[0]+B[0],C[1]=A[1]+B[1].........依次类推。然后依次给数组的每一个元素进位,假如C[0]>=10,那么需要进位,个位进位:C[1]+=C[0]/10,个位:C[0]=C[0]%10,依次类推....
2022-11-25 19:56:12
1271
原创 C语言实现扫雷完整代码讲解
扫雷是一款初学者能用C语言实现的益智小游戏,只需要用二维数组操作雷区即可。 游戏思路如下:点击雷区中的任一格子,如果该格子有雷,则游戏结束;如果该格子周围9个格子都不是雷,那么直接展开其附近的九个格子,如此持续下去(说明待会要用到递归),假如该格子附近有雷,则不展开其周围的格子,但要展现出该格子周围的雷数。 根据游戏思路可知,我们需要两个二维数组,一个mine数组,用来记录雷的分布信息,另外一个是show数组,用以为玩家展示排查后雷区的信息。程序所要实现的几个主要功能是:1.初始化数组。
2022-11-15 22:54:11
1617
空空如也
想问为什么不能使用单链表
2023-06-20
TA创建的收藏夹 TA关注的收藏夹
TA关注的人