单调递增最长子序列
来源:互联网 发布:招聘渠道数据分析 编辑:程序博客网 时间:2024/05/07 02:08
单调递增最长子序列
时间限制:3000 ms | 内存限制:65535 KB
难度:4
- 描述
- 求一个字符串的最长递增子序列的长度
如:dabdbf最长递增子序列就是abdf,长度为4- 输入
- 第一行一个整数0<n<20,表示有n个字符串要处理
随后的n行,每行有一个字符串,该字符串的长度不会超过10000 - 输出
- 输出字符串的最长递增子序列的长度
- 样例输入
3aaaababcabklmncdefg
- 样例输出
137
- 来源
- 经典题目
- 上传者
iphxer
思路:用一个d数组保存到第从1到m个字符为止的最长递增子序列的长度,当前位置的值,应该取,(在他前面比他小的,单调递增序列的长度加1),和(当前值)的最大值。用两个for循环,一个用来遍历每个元素,给每个元素计算出最大递增子序列的值,嵌套的for循环用来找在他之前的递增子序列,找出最大值加1,跟当前比较,取二者最大值
#include<stdio.h>#include<string.h> int max(int a, int b){return a > b ? a : b;}int main(){int n, i, j, result, len, d[10001];char str[10001];scanf("%d", &n);while(n--){scanf("%s", str);len = strlen(str);for(i = 0; i < len; i++){d[i] = 1;for(j = 0; j < i; j++){if(str[i] > str[j])d[i] = max(d[i], d[j] + 1);}}result = 1;
for(i = 0; i < len; i++){if(d[i] > result)result = d[i];}printf("%d\n", result);}return 0;}
0 0
- 最长单调递增子序列
- 最长单调递增子序列
- 最长单调递增子序列
- 最长单调递增子序列
- 最长单调递增子序列
- 最长单调递增子序列
- 最长单调递增子序列
- 单调递增最长子序列
- 单调递增最长子序列
- 最长单调递增子序列
- 单调递增最长子序列
- 最长单调递增子序列
- 最长单调递增子序列
- 单调递增最长子序列
- 最长单调递增子序列
- 最长单调递增子序列
- 最长单调递增子序列
- 最长单调递增子序列
- 更新 Ubuntu 软件源
- linux常用命令
- 求建议!
- 程序培养思维
- 报表SQL测试失败
- 单调递增最长子序列
- 子串和
- 天風姤 (易經大意 韓長庚)
- java循环结构--for,while以及do....while
- 数据结构和算法学习开始啦
- <算法导论>学习笔记(1)--第1章 算法在计算中的作用
- 黑马程序员--html一些基础知识小结
- PAT1010
- 拦截导弹