数据结构与算法
文章平均质量分 52
朱小崐
CV程序员
展开
-
最长公共子序列(dp,c++)
题目:描述:给定两个字符串A、B,求一个字符串是A和B的公共部分(公共部分可以不连续)。解法:dp,开一个二维数组dp[i][j],表示a[1]到a[i]和b[1]到b[j]最长公共子序列,比如当a是“story”b是“sbtar”时,dp[2][3]表示st和sbt比较,最长为st,所以等于2,大概是这个图表:那么当a[i]==b[j]时,dp[i][j]=dp[i-1][j-1],因为如果当前字母不相等那么一定他们两个字符串添加当前两个字母的最长子序列相同。所以当a[i]!=b[j]时,dp[原创 2021-03-18 23:37:48 · 275 阅读 · 1 评论 -
最大连续子串和(dp,C++)
题目:题目:最大连续子串和描述:给定一个数字序列,A1、A2……An,求i,j,使得Ai+……Aj最大,输出这个最大和样例:-2 11 -4 13 -5 -2输出:20方法一:枚举左右端点,for i j,需要O(n²)的时间复杂度,再算出累加和,应该要O(n³),应该过不了几个样例方法二:动态规划dp[i]的含义是最后一位是序列中第i的数字时,最大的子序列和,每次循环面临两个选择(那么我愿意称这道题为01背包),如果当前元素的前一位为结尾的最大子序列和是负数,那么如果把之前的序列添进来一定原创 2021-03-17 23:45:01 · 1201 阅读 · 0 评论 -
快速幂(C++)
快速幂:描述:求a的b次幂再取余m通常写法:开一个int ans=0,ans = ans * a % m,执行一共b次:for(int i=0;i<b;i++){ ans = ans * a % m;}cout << ans;“显然时间不够优秀”。快速幂思路: 基于二分法的思想,如果b是奇数:a的b次幂=aa的b-1次幂 ,如果b是偶数,a的b次幂=a的b/2次幂 * a的b/2次幂 。比如:2的10次幂=a的5次 * a的5次2的5次=22的4次……原创 2021-03-16 22:26:25 · 185 阅读 · 0 评论 -
素数筛法(图解,C++)
题解:找出1-100中所有的素数(质数)1、我们通常是遍历1-100,然后每个数字从2开始到根号i,只要取余等于0,则不是素数,否则就是素数来判断,像是这样:bool judge(int x) //判断x是否为素数{ for (int i = 2; i*i <= x; i++) //遍历2至根号x { if (x % 2 == 0) //若被整除,则返回假 return false; } return true; //退出循环 ,则返回真}在主函数中则是:原创 2021-03-16 13:18:15 · 1038 阅读 · 0 评论 -
求连通块(BFS、DFS例题)
题目:给出一个mxn的矩阵,矩阵中的元素为0或1。称位置(x, y)与其上下左右四个位置(x,y+1)、 (x,y-1) (x+1,y) (x- 1, y)是相邻的。如果矩阵中有若干个1是相邻的(不必两两相邻),那么称这些1构成了一个“块”。求给定的矩阵中“块”的个数。前言:记录一下思路,方便以后回来复习一下思路与要点:1、设置方向增量的数组:int X[] = { 0,0,1,-1 }; //方向增量数组int Y[] = { 1,-1,0,0 };2、设置一个记录点坐标的结构体(pa原创 2021-03-14 16:00:37 · 1214 阅读 · 0 评论 -
算法训练 校门外的树(区间合并,C++)
试题 算法训练 校门外的树问题描述:某校大门外长度为L的马路上有一排树,每两棵相邻的树之间的间隔都是1米。我们可以把马路看成一个数轴,马路的一端在数轴0的位置,另一端在L的位置;数轴上的每个整数点,即0,1,2,……,L,都种有一棵树。 由于马路上有一些区域要用来建地铁。这些区域用它们在数轴上的起始点和终止点表示。已知任一区域的起始点和终止点的坐标都是整数,区域之间可能有重合的部分。现在要把这些区域中的树(包括区域端点处的两棵树)移走。你的任务是计算将这些树都移走后,马路上还有多少棵树。 输入原创 2021-03-13 11:22:19 · 639 阅读 · 0 评论 -
最小生成树Kruscal算法、并查集去环(详细图解,C++)
《最小生成树Kruscal算法、并查集代码》前言:这是第一次不用到例题来写一个算法的博客hhh,我在看了网上好多好多好多资料后,总结到博客里。一、Kruscal算法思想:①我们做最小生成树题的时候,要用到一个边的结构体数组:typedef struct stu ///边结构体{ int u; //边起始节点 int v; //边结尾节点 int len; //边权值}edge;edge a[10005]; //边的结构体数组②原创 2021-02-15 23:20:20 · 825 阅读 · 0 评论