![](https://img-blog.csdnimg.cn/20201014180756738.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
算法
算法学习之路
芯辰大海
这个作者很懒,什么都没留下…
展开
-
P/NP/NP完全/NP难问题
P/NP/NP完全/NP难问题P问题存在多项式时间复杂度求解算法的问题,即P类问题的时间复杂度 为O(n^k),其中k为某一常数,n为问题的规模。NP问题此类问题的解都能够在O(n^k)时间复杂度内被验证。根据P问题和NP问题的定义可知,P问题是NP问题的子集,即P ⊆ NP。NP完全问题首先这类问题是NP问题,其次其他所有NP 问题都能在多项式时间复杂度内转换成这类问题。NP难问题这类问题的解不能在多项式时间复杂度内被验证。...原创 2022-02-22 19:41:18 · 154 阅读 · 0 评论 -
动态规划———最长公共子序列 c++完整代码
最长公共子序列(LCS)定义:给定序列s1={1,3,4,5,6,7,7,8}, s2={3,5,7,4,8,6,7,8,2},s1和s2的相同子序列,且该子序列的长度最长,即是LCS。公共子序列就是,s1和s2中都要包含的元素,并且顺序是保持不变的;其中上述s1和s2一个最长公共子序列是{ 3,4,6,7,8 };递推关系:二维数组arr[i][j]的元素存放,子串s中,s0s1s2s3……si-1,和子t中,t0t1t2t3……..ti-1这两个子串的LCS长度;1)当si=tj时——ar原创 2021-11-27 19:24:22 · 5306 阅读 · 0 评论 -
归并排序 c++
归并排序采用了分治(Divide and Conquer)和递归(Recursion)的思想; 归并是将两个的有序数列合并成一个有序数列; 归并排序主要分3步:1.划分数组(二分);2.数组排序(递归);3.合并数组(归并);归并排序算法步骤:1、申请空间,使其大小为两个已经排序序列之和,该空间用来存放合并后的序列2、设定两个指针,最初位置分别为两个已经排序序列的起始位置3、比较两个指针所...原创 2021-11-23 10:45:06 · 95 阅读 · 0 评论 -
二分查找——mid=(left+right)/2溢出
1、int型变量int 是一种整型变量,占用 4 字节 32 比特时的取值范围是- 2147483648~2147483647,占用 2 字节 16 比特时的取值范围是- 32768~32767;2、mid=(left+right)/2二分查找时,求取中间值的操作步骤,写法mid = (left + right) / 2,这种写法存在问题。原因:left可能不断增大,如果到极限状态,也就是left达到了right-1的地步的时候刚好数组的长度又很大,那么就可能导致left + right的溢出出原创 2021-11-17 09:58:28 · 4100 阅读 · 6 评论