单调递增最长子序列 - 从最长公共子序列到单调递增最长子序列
最长公共子序列 的 算法思路 在这里 点击进入 将 代码稍微改动一下 就可以 , 最长公共子序列 是两个 字符串求 公共子序列 , 可以将其中的 一个 改为 从 a 到 z 这样输入另一个 就得到了 单调递增最长子 序列 下面附上题目 和 代码
这个是 时间复杂度 为 N 也算是 最优时间复杂度
1 #include<stdio.h> 2 #include<string.h> 3 #include<math.h> 4 #include<iostream> 5 #include<algorithm> 6 #include<queue> 7 #include<vector> 8 #include<set> 9 #include<stack> 10 #include<string> 11 #include<sstream> 12 #include<map> 13 #include<cctype> 14 using namespace std; 15 int t,c[30][10005]; 16 char a[30],b[10005]; 17 int main() 18 { 19 scanf("%d",&t); 20 for(int i=0;i<=26;i++) 21 a[i]='a'+i; 22 while(t--) 23 { 24 scanf("%s",b); 25 int lb=strlen(b); 26 memset(c,0,sizeof(c)); 27 for(int i=1;i<=26;i++) 28 { 29 for(int j=1;j<=lb;j++) 30 { 31 if(a[i-1]==b[j-1]) 32 c[i][j]=c[i-1][j-1]+1; 33 else 34 c[i][j]=c[i][j-1]>c[i-1][j]?c[i][j-1]:c[i-1][j]; 35 } 36 } 37 printf("%d\n",c[26][lb]); 38 } 39 return 0; 40 }
下面附上一个时间复杂度为 N^2 的普通算法 ( 这个也算是比较普通 , 比较通用的算法了 )
1 #include<stdio.h> 2 #include<string.h> 3 #include<math.h> 4 #include<iostream> 5 #include<algorithm> 6 #include<queue> 7 #include<vector> 8 #include<set> 9 #include<stack> 10 #include<string> 11 #include<sstream> 12 #include<map> 13 #include<cctype> 14 #include<limits.h> 15 using namespace std; 16 int main() 17 { 18 int t,l,dp[10005]; 19 char a[10005]; 20 scanf("%d",&t); 21 while(t--) 22 { 23 scanf("%s",a); 24 l=strlen(a); 25 for(int i=0;i<l;i++) 26 { 27 dp[i]=1; 28 } 29 for(int i=1;i<l;i++) 30 for(int j=0;j<i;j++) 31 { 32 if(a[i]>a[j]) 33 dp[i]=max(dp[i],dp[j]+1); 34 } 35 int maxn=INT_MIN; 36 for(int i=0;i<l;i++) 37 maxn=maxn>dp[i]?maxn:dp[i]; 38 printf("%d\n",maxn); 39 } 40 return 0; 41 }
还有一个 时间复杂度 为 N log N 的 二分法 算法
1 #include<stdio.h> 2 #include<string.h> 3 #include<math.h> 4 #include<iostream> 5 #include<algorithm> 6 #include<queue> 7 #include<vector> 8 #include<set> 9 #include<stack> 10 #include<string> 11 #include<sstream> 12 #include<map> 13 #include<cctype> 14 #include<limits.h> 15 using namespace std; 16 int main() 17 { 18 int t,l; 19 char a[10005],dp[10005]; 20 scanf("%d",&t); 21 while(t--) 22 { 23 scanf("%s",a); 24 l=strlen(a); 25 int location,num=0; 26 for(int i=0;i<l;i++) 27 { 28 location=lower_bound(dp,dp+num,a[i])-dp; 29 dp[location]=a[i]; 30 num=location+1>num?location+1:num; 31 } 32 printf("%d\n",num); 33 } 34 return 0; 35 }
转载于:https://www.cnblogs.com/A-FM/p/5422295.html
单调递增最长子序列 - 从最长公共子序列到单调递增最长子序列相关推荐
- [csu/coj 1078]多个序列的最长公共子序列
题意:给n个序列,同一个序列里面元素互不相同,求它们的最长公共子序列. 思路:任取一个序列,对于这个序列里面的两个数ai,aj(i<j),如果对于其它每一个序列,都出现过ai,aj,且ai在aj ...
- 算法知识之最长公共子序列问题(动态规划)
最近朋友让帮做个关于动态规划的最长公共子序列的问题,翻看以前的笔记并完成该题后,顺便写这样一篇文章,希望对大家有所帮助,同时也帮助自己回顾该知识点. 一.最长公共子序列的定义 子序列:若给定序列X={ ...
- 动态规划---例题2.最长公共子序列问题
本题与力扣主站1143题相同. 一.问题描述 一个给定序列的子序列是在该序列中删去若干元素后得到的序列. 确切地说,若给定序列X=<x1, x2,-, xm>,则另一序列Z=<z1, ...
- 动态规划之最长公共子序列问题
问题描述 若给定序列X={x1,x2,-,xm},则另一序列Z={z1,z2,-,zk},是X的子序列是指存在一个严格递增下标序列{i1,i2,-,ik}使得对于所有j=1,2,-,k有:zj=xij ...
- 数组字符串那些经典算法:最大子序列和,最长递增子序列,最长公共子串,最长公共子序列,字符串编辑距离,最长不重复子串,最长回文子串 (转)...
作者:寒小阳 时间:2013年9月. 出处:http://blog.csdn.net/han_xiaoyang/article/details/11969497. 声明:版权所有,转载请注明出处,谢谢 ...
- 动态规划之最长递增子序列 最长不重复子串 最长公共子序列
[前言]动态规划:与分治法相似,即通过组合子问题来求解原问题,不同的是分治法是将问题划分为互不相交的子问题,递归求解子问题,再将他们组合起来求出原问题的解. 动态规划则应用于子问题重叠的情况,通常用来 ...
- 动态规划-最长公共子序列-最长递增子序列-最大递增子序列和-miking time
1. 最长公共子序列 假设 X 和 Y 的序列如下: X[1...m] = {A, B, C, B, D, A, B} Y[1...n] = {B, D, C, A, B, A} 可以看出,X 和 Y ...
- c语言最长公共子序列_序列比对(二十四)——最长公共子序列
原创: hxj7 本文介绍如何求解两个字符串的最长公共子序列. 最长公共子序列问题 前文<序列比对(二十三)--最长公共子字符串>介绍了如何求解两个字符串的最长公共子字符串,本文将介绍如何 ...
- 使用最长公共子序列算法进行序列比对
介绍 在分子生物学中,DNA 和蛋白质可以表示为字母序列. DNA 序列由 A.T.G.C 组成,代表核苷碱基(nucleobases) 腺嘌呤.胸腺嘧啶.鸟嘌呤和胞嘧啶. 蛋白质由 20 个不同的字 ...
最新文章
- 对TD tree的使用体验及建议
- 设置Kali Linux永不锁屏
- 为全局变量赋值_Postman全局变量设置和运用
- 图像拼接 SIFT资料合集
- Vmware提示:host usb device connections disabled-(vmware 主机已禁用 usb 设备连接)
- dropdownlist javascript 取得value text
- go和python计算字节数组sha1
- mahout贝叶斯算法开发思路(拓展篇)1
- Java:JDK安装
- 李大维:互联网人做硬件创业容易产生的七大误解【转载】
- Android开发笔记(一百六十九)利用BottomNavigationView实现底部标签栏
- 数据科学家最常用的十种算法和方法
- 原生JavaScript添加format方法 ----占位符
- MySQL导出sql脚本文件
- python分词工具,你用哪个
- 【笔记】A Tutorial of Transformers_复旦大学邱锡鹏报告
- Win10系统,ColorPix取色位置偏移如何解决?
- 在天翼网关2.0上如何使用自己的路由器
- 计算机错误651是什么故障,宽带连接错误651是什么意思?
- SOA只不过是一种设计模式而已