![](https://img-blog.csdnimg.cn/20201014180756754.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
算法
文章平均质量分 57
一些刷过的算法题的题解
tuoluoo
这个作者很懒,什么都没留下…
展开
-
并查集,二叉树,快排题解
根据前序遍历遵循“根左右”和中序遍历遵循”左根右“的特点,首先一棵二叉树的前序第一个是根,那么在中序中,根就把中序分成左子树和右子树,然后我们再把左子树和右子树看成单独的两棵二叉树,然后跟之前一样在前序找到根,再分成左子树和右子树,不断递归直到不能再分就可以按照后序输出的规律输出 #include<stdio.h> #include<string.h> char a[100],b[100]; void fun(int root,int start,int end)//...原创 2022-01-23 13:58:25 · 400 阅读 · 0 评论 -
最短路题解
图:顶点与边的集合。表示为G(V,E)。G表示图,V表示顶点个数(即图中的元素),E表示边的数;图中一定有顶点,边可以没有,任意两个顶点都可能有关系 floyd算法:感觉像是一种动态规划,建立一个二维数组,用来表示两点间的最短路径值,开始的时候是初始化的值,用三个循环,不断判断通过其他顶点的参与,是否有最短路径可取,更新两点间的最短距离 基本代码 #include<bits/stdc++.h>. using namespace std; int main() { int e[10原创 2022-02-14 19:26:03 · 508 阅读 · 0 评论 -
最小生成树
最小生成树: 一个图中可能存在多条相连的边,我们一定可以从一个图中挑出一些边生成一棵树。这仅仅是生成一棵树,还未满足最小,当图中每条边都存在权重时,这时候我们从图中生成一棵树(n - 1 条边)时,生成这棵树的总代价就是每条边的权重相加之和。 一个有N个点的图,边一定是大于等于N-1条的。图的最小生成树,就是在这些边中选择N-1条出来,连接所有的N个点。这N-1条边的边权之和是所有方案中最小的。 普里姆算法: 1.任意找一个点,生成一个集合a,将除此点之外的另外的点放入另一个集合b,构建一个表,表中原创 2022-02-19 15:51:54 · 537 阅读 · 0 评论 -
kmp和字符串哈希题解
1. 当看到这一题的时候,我不带脑子抬手就做, 这个题目乍一看就是用暴力搜索,我开始想的是用一个一个的比的方式,遇到一样的字母就往后移,遇到不同的字母就整体向后移一位,然后花费大量时间写出了一个暴力代码,果然事情没那么简单,妥妥的时间超限了。 然后我就仔细看了一下这个题的标题 KMP字符串匹配 我悟了,这是要自学新算法的节奏,于是我去找到那本大话数据结构搁那磨磨唧唧,发现串和串的基本知识都能懂,但就是kmp这个知识点不进脑,我又秉持着不看别人的代码的毛病,结果白忙活了。 果然啥事开头难,我.原创 2022-02-14 19:16:37 · 399 阅读 · 0 评论 -
关于搜索的题解
一、八皇后 Checker Challenge 假设有一张n*n表格,上面全是0代表空,然后我们一行一行的遍历,每一行放一个并做好标记 在标记的时候,实际上我们只需要标记三个方向,,左下,正下,右下(应为一行只会有一个皇后,并且已经放好皇后的行数在没有回溯的情况下不会受到接下来皇后的放置的影响) 标记是通过加一,也就是每有一个皇后的不能放的范围触及到那里,就加一,这样回溯的时候就减一,就会避免掉回溯把几个皇后的触及范围全部消掉。 #include<stdio.h> int.原创 2022-01-16 10:52:25 · 445 阅读 · 0 评论 -
八皇后 Checker Challenge
假设有一张n*n表格,上面全是0代表空,然后我们一行一行的遍历,每一行放一个并做好标记 在标记的时候,实际上我们只需要标记三个方向,,左下,正下,右下(应为一行只会有一个皇后,并且已经放好皇后的行数在没有回溯的情况下不会受到接下来皇后的放置的影响) 标记是通过加一,也就是每有一个皇后的不能放的范围触及到那里,就加一,这样回溯的时候就减一,就会避免掉回溯把几个皇后的触及范围全部消掉 #include<stdio.h> int map[20][20]= {0},n,result[20...原创 2022-01-13 23:15:13 · 150 阅读 · 0 评论 -
判读队列的合法性
#include<stdio.h> void push(int n,int a[]) { int j=1,top=0,w[2000]= {0};//初始化 for(int i=0; i<n; i++) { if(w[top]!=a[i])//当栈的顶端与队列第一个不相等时 { for(; j<=a[i]; j++)//逐步输入栈 { top+...原创 2021-12-15 22:27:48 · 362 阅读 · 0 评论