博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
24-单调递增最长子序列(多种解法总结)
阅读量:5277 次
发布时间:2019-06-14

本文共 1621 字,大约阅读时间需要 5 分钟。

                单调递增最长子序列

http://acm.nyist.edu.cn/JudgeOnline/problem.php?pid=17

时间限制:
3000 ms  |  内存限制:65535 KB
难度:
4
 
描述
求一个字符串的最长递增子序列的长度
如:dabdbf最长递增子序列就是abdf,长度为4
 
输入
第一行一个整数0<n<20,表示有n个字符串要处理
随后的n行,每行有一个字符串,该字符串的长度不会超过10000
输出
输出字符串的最长递增子序列的长度
样例输入
3aaaababcabklmncdefg
样例输出
137
方法一: #include 
#include
using namespace std;string str;int dp[10005];int main(){ int t; cin >> t; while(t--){ cin >> str; for(int i = 0; i < str.length(); i++){ dp[i] = 1; } int max = 0; for(int i = 0; i < str.length(); i++){ for(int j = 0; j < i; j++){ if(str[i] > str[j] && dp[j] + 1 > dp[i]){ dp[i] = dp[j] + 1; } } if(max < dp[i]){ max = dp[i]; } } cout << max << endl; } return 0;} 方法二:(for循环查找或二分查找:所求序列不一定正确,但长度正确)#include
#include
using namespace std;string str;int main(){ int t; cin >> t; while(t--){ int leng = 0; char ans[10005]; cin >> str; ans[0] = str[0]; for(int i = 1; i < str.length(); i++){ if(str[i] > ans[leng]){ ans[++leng] = str[i]; } else{// for(int j = 0; j <= leng; j++){ //在ans中查找第一个比str[i]大或等的字母(即最小的最大值),将其替换掉 // if(str[i] <= ans[j]){ //可以用二分查找 // ans[j] = str[i];// break;// }// } int x = lower_bound(ans, ans + leng, str[i]) - ans; //STL: 二分: t = lower_bound(s,s+top,m)-s; 返回值第一个大于等于m的数的地址,s是一个数组,top是查 //找长度,要减 s 得第一个大于等于m 的数的下标 //http://blog.csdn.net/zhongkeli/article/details/6883288 ans[x] = str[i]; } } cout << leng + 1 << endl; } return 0;}

  

 

转载于:https://www.cnblogs.com/zhumengdexiaobai/p/8370978.html

你可能感兴趣的文章
梦断代码读后感01
查看>>
[CF#250 Div.2 D]The Child and Zoo(并查集)
查看>>
博客园博客插入公式
查看>>
spring ioc原理(看完后大家可以自己写一个spring)
查看>>
hdu 1028 Ignatius and the Princess III(母函数入门+模板)
查看>>
Ubuntu下配置安装telnet server
查看>>
Codeforces 235 E Number Challenge
查看>>
ubuntu 常见命令整理
查看>>
关于vue的npm run dev和npm run build
查看>>
微信小程序手机调试
查看>>
Hive架构
查看>>
Windows 2019 docker 速记
查看>>
设计模式学习笔记(二十二:备忘录模式)
查看>>
第二轮冲刺-Runner站立会议09
查看>>
HTML <base> 标签
查看>>
getDefinitionByName与ApplicationDomain.getDefinition
查看>>
那墙可有五十米高啊!
查看>>
EJBCA安装教程+postgresql+wildfly10
查看>>
HDU 5950 Recursive sequence 【递推+矩阵快速幂】 (2016ACM/ICPC亚洲区沈阳站)
查看>>
相册权限 第一次安装、用户是否授权
查看>>