【算法】动态规划 最长上升子序列
2014-03-24 16:27
218 查看
/* * * 找出最长上升子序列的个数 * 并输出一个最长子序列 * */ #include <stdio.h> #define MAX_STR_SIZE 50 int main() { int i = 0; int j = 0; int Max = 0; int Maxlocate = 0; char str[MAX_STR_SIZE]; int lque[MAX_STR_SIZE] = {0,}; scanf("%s",str); while (str[i] != '\0') { lque[i] = 1; for (j = 0; j <= i; j++) { if (str[i] > str[j]) { lque[i] = lque[i] > lque[j]+1 ? lque[i] : lque[j]+1; if (Max < lque[i]) { Max = lque[i]; Maxlocate = i; } } } i++; } printf("\nThe Longest sequeue length is :%d\n",Max); Max--; char tmp = str[Maxlocate]; printf("%c ",tmp); /* 输出时 从最大值开始 逆序输出 */ while (--Maxlocate >= 0) { if (Max >= 1 && Max == lque[Maxlocate] && tmp > str[Maxlocate]) { Max--; tmp = str[Maxlocate]; printf("%c ",tmp); } } printf("\n"); return 0; }
相关文章推荐
- 初入算法篇(动态规划)最长上升子序列poj2533+栈优化模板&&scau18090 好多好多球
- 动态规划-基础篇——最长上升子序列(nlogn)
- 动态规划——求最长下降/上升子序列
- 最长上升子序列——O (nlogn)算法原因解析!为什么这样可以求出来!(附带动态规划dp + 二分查找讲解)
- 【最长上升子序列LIS】O(n^2)和O(nlogn)算法简记
- 算法基础之python实现动态规划中数字三角形和最长上升子序列问题
- 动态规划练习一 01:最长上升子序列
- 蓝桥杯 拦截导弹 动态规划(最长下降子序列+最长上升子序列)
- C++ 计蒜客算法基础入门最长上升子序列
- 波浪子序列 Wavio Sequence UVA10534 动态规划 最长上升子序列变形
- 算法系列_实例01_最长上升子序列问题
- 算法-最长上升子序列
- DP之最长上升子序列O(n*logn)算法
- LIS(最长上升子序列两种算法模板)DP模板,并且输出序列
- 经典字符串算法 “最长上升子序列,最大连续子序列和,最长公共子串”
- 动态规划——求最长下降/上升子序列
- 九度OJ 1500 出操队形 -- 动态规划(最长上升子序列)
- 求最长上升子序列用动态规划
- 最长上升子序列两种算法o(n^2),o(nlogn)
- 最长上升子序列(LIS)算法