最长递增子序列(LIS) 学习中ing
2012-04-08 16:39
453 查看
单调递增最长子序列
描述求一个字符串的最长递增子序列的长度
如:dabdbf最长递增子序列就是abdf,长度为4
输入第一行一个整数0<n<20,表示有n个字符串要处理
随后的n行,每行有一个字符串,该字符串的长度不会超过10000输出输出字符串的最长递增子序列的长度样例输入
3 aaa ababc abklmncdefg
样例输出
1 3 7
Accepted
#include<stdio.h> int length(char * s) { int len[128] = {0}, i, t; for(; *s != '\0' && (t = len[*s - 1] + 1); s++) for(i = *s; i < 128 && len[i] < t; len[i++] = t); return len[127]; } int main() { int n; char s[10001]; for(scanf("%d\n", &n); n--;) printf("%d\n", length(gets(s))); return 0; }
还待好好研究研究。有IOCCC的风格啊
2、http://icpc.ahu.edu.cn/OJ/Problem.aspx?id=189
#include <iostream> #include <cstring> using namespace std; #define MAXNUM 7005 int aMaxlen[MAXNUM]; // aMaxlen[]是备忘录 unsigned int array[MAXNUM]; unsigned int Maxlen(const int n) // Maxlen(n)是 以array 为末元素的所有递增子序列 中长度最长的列的长度 { if( n == 1 ) return 1; int i; for(i = 1; i < n; i++) { if (aMaxlen[i] == -1) aMaxlen[i] = Maxlen(i); } int maxlen_i = 0; // maxlen_i是以array[i]为末元素的递增子序列中长度最长的列的长度,且array[i] < array for(i = 1; i < n; i++) { if( array[i] < array && aMaxlen[i] > maxlen_i ) maxlen_i = aMaxlen[i]; } if( maxlen_i == 0 ) // maxlen_i没变,则array 最小(前面找不到比它小的) return 1; // 故以array 为末元素的递增子序列就是它自己 return maxlen_i + 1; } int SearchMax(int size) { int max = 0; for (int i = 1; i <= size; i++) { if (aMaxlen[i] > max) max = aMaxlen[i]; } return max; } int main(void) { // freopen("cin.txt", "r", stdin); int N; while(cin >> N) { memset(aMaxlen, -1, sizeof(aMaxlen)); for(int i = 1; i <= N; i++) cin >> array[i]; aMaxlen = Maxlen(N); cout << SearchMax(N) << endl; } return 0; }
相关文章推荐
- 最长递增子序列(LIS) 学习中ing
- 算法——最长递增子序列(LIS)
- Python动态规划求解最长递增子序列(LIS)
- 最长递增子序列(LIS) nlog(n)算法
- 最长上升子序列(LIS) dp学习~3
- 最长递增子序列(LIS)的三种求解方法
- 最长递增子序列(LIS)
- 最长递增子序列(LIS)
- CCNU ACM 2016夏季集训·最长递增子序列(LIS)
- 数据结构与算法学习之路:LIS——最长递增序列的动态规划算法和二分思想算法
- 最长递增子序列(LIS)
- LIS.学习C++ 最长上升序列
- 最长递增子序列(LIS)
- 最长递增子序列 ( LIS )——The All-purpose Zero ( HDU 5773 ) ( 2016 Multi-University Training Contest 4 1010 )
- 编程之美--数组中的最长递增子序列(LIS longest increasement sequence)
- 最长递增子序列(LIS)
- 最长递增子序列问题—LIS
- 最长递增子序列(LIS)问题
- 最长递增子序列 LIS
- 最长递增子序列问题的求解(LIS)