NYOJ-17-单调递增最长子序列
2016-05-18 01:13
148 查看
描述
求一个字符串的最长递增子序列的长度
如:dabdbf最长递增子序列就是abdf,长度为4
输入
第一行一个整数0 < n < 20,表示有n个字符串要处理
随后的n行,每行有一个字符串,该字符串的长度不会超过10000
输出
输出字符串的最长递增子序列的长度
样例输入
3
aaa
ababc
abklmncdefg
样例输出
1
3
7
水题喽……
求一个字符串的最长递增子序列的长度
如:dabdbf最长递增子序列就是abdf,长度为4
输入
第一行一个整数0 < n < 20,表示有n个字符串要处理
随后的n行,每行有一个字符串,该字符串的长度不会超过10000
输出
输出字符串的最长递增子序列的长度
样例输入
3
aaa
ababc
abklmncdefg
样例输出
1
3
7
水题喽……
#include <stdio.h> #include <string.h> char strA[10001], strB[50]; int upper_bound(int A, int key) { for (int i = 0; i < key; i++) { if (strB[i] >= A) { return i; } } return key; } int main(int argc, const char * argv[]) { int n; scanf("%d", &n); while (n--) { scanf("%s", strA); int len = (int)strlen(strA); int key = 0; strB[key] = strA[key]; for (int i = 1; i < len; i++) { if (strA[i] > strB[key]) { strB[++key] = strA[i]; } else { strB[upper_bound(strA[i], key)] = strA[i]; } } printf("%d\n", key + 1); } return 0; }
相关文章推荐
- 乔布斯告诉你:什么是面向对象编程
- ES6新特性:Function函数扩展, 扩展到看不懂
- SIMS系统License
- Linux之epoll族实现分析
- 2016/5/17
- 【杂碎笔记】【计算机与机器视觉 by E.R.Davies】Chapter3
- web技术学习阶段性总结
- leetcode_c++:Search insert position(035)
- Log4j介绍
- 【C语言】迷宫游戏设计思路与功能体会及简单的改进报告
- JVM三种命令行选项
- Scala函数式编程原理 第二课 编程的本质(Elements of programing)
- 二叉树 创建 遍历!!!
- 20159313网络攻击与防范第十一周学习总结
- 【AKOJ】1023-DNA Sorting
- MyList
- SpringMVC Controller 介绍
- 网络协议中STP根桥的选举
- 最小堆及堆排序
- 手把手教你使用startuml画用例图