博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
单调递增最长子序列(动态规划)
阅读量:5154 次
发布时间:2019-06-13

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

题目描述:

求一个字符串的最长递增子序列的长度
如:dabdbf最长递增子序列就是abdf,长度为4

输入描述:

第一行一个整数0
<20,表示有n个字符串要处理随后的n行,每行有一个字符串,该字符串的长度不会超过10000

输出描述:

输出字符串的最长递增子序列的长度

样例输入:

3aaaababcabklmncdefg

样例输出:

137 AC代码:
1 #include
2 #include
3 #include
4 using namespace std; 5 char s[10005]; 6 int dp[10005]; 7 int main() 8 { 9 int t;10 scanf("%d",&t);11 while(t--)12 {13 scanf("%s",s);14 int len=strlen(s);15 memset(dp,0,sizeof(dp));16 17 for(int i=0;i
s[j]) 23 dp[i]=max(dp[i],dp[j]+1);24 }25 }26 sort(dp,dp+len);27 printf("%d\n",dp[len-1]);28 }29 return 0;30 }
显示答案错误:
#include
#include
#include
using namespace std;char str[10005],a[10005];int dp[10005];int main(){ int n; scanf("%d",&n); while( n-- ){ scanf("%s",a); int len = strlen(a); for( int i = 0; i < len; i++ ) str[i+1] = a[i]; dp[1] = 1; for( int i = 2; i <= len; i++ ){ dp[i] = 0; for( int j = 1; j <= len; j++ ){ if( str[i] > str[j] ) dp[i] = max(dp[i],dp[j]+1); } } int ans = 0; for( int i = 1; i <= len; i++ ) ans = max(ans,dp[i]); printf("%d\n",ans); } return 0;}

 

 

转载于:https://www.cnblogs.com/geziyu/p/10045816.html

你可能感兴趣的文章
Java学习笔记--字符串和文件IO
查看>>
转 Silverlight开发历程—(画刷与着色之线性渐变画刷)
查看>>
在js在添版本号
查看>>
sublime3
查看>>
Exception Type: IntegrityError 数据完整性错误
查看>>
Nuget:Newtonsoft.Json
查看>>
Hdu - 1002 - A + B Problem II
查看>>
Android设置Gmail邮箱
查看>>
js编写时间选择框
查看>>
JIRA
查看>>
小技巧——直接在目录中输入cmd然后就打开cmd命令窗口
查看>>
深浅拷贝(十四)
查看>>
HDU 6370(并查集)
查看>>
BZOJ 1207(dp)
查看>>
HDU 2076 夹角有多大(题目已修改,注意读题)
查看>>
洛谷P3676 小清新数据结构题(动态点分治)
查看>>
九校联考-DL24凉心模拟Day2T1 锻造(forging)
查看>>
Attributes.Add用途与用法
查看>>
L2-001 紧急救援 (dijkstra+dfs回溯路径)
查看>>
javascript 无限分类
查看>>