最长上升子序列(代码实现)
来源:互联网 发布:ios 软件推荐 编辑:程序博客网 时间:2024/06/18 09:01
经典问题,不在赘述
#include <cstdio>#include <cstring>const int maxn = 10000;//用maxlen[i]表示a[1], a[2],..., a[k]中最长上升子序列的长度//那么状态转移方程为//maxlen[1] = 1//maxlen[i] = 1 + MAX{maxlen[j], 其中1 <= j < i, a[j] < a[i]}, (1 < i <= n)void init(int n, int *a, int *maxlen){ memset(maxlen, 0, sizeof(maxlen));maxlen[1] = 1;for (int i = 2; i <= n; i++) {int tem = 0;for (int j = 1; j < i; j++) {if (a[j] < a[i] && tem < maxlen[j])tem = maxlen[j];}maxlen[i] = tem + 1;}return;}//寻找maxlen[maxn]中的最大值int solve(int n, int *a, int *maxlen){int ans = 0;for (int i = 1; i <= n; i++)if (ans < maxlen[i])ans = maxlen[i];return ans;}int main(){ freopen("data.in", "r", stdin);int n;while (scanf("%d", &n) == 1) {int a[maxn], maxlen[maxn];for (int i = 1; i <= n; i++)scanf("%d", a + i);init(n, a, maxlen);int ans = solve(n, a, maxlen);printf("%d\n", ans);}return 0;}
0 0
- 最长上升子序列(代码实现)
- 最长上升连续子序列(解题代码)
- 最长上升子序列的nlogn算法实现(用栈)
- 最长上升子序列LIS算法实现
- 最长上升子序列LIS算法实现
- 最长上升子序列LIS算法实现
- 最长上升子序列LIS算法实现
- 最长上升子序列LIS算法实现
- Java实现-最长上升子序列
- Java实现-最长上升连续子序列
- A序列(最长上升子序列)
- 最长上升子序列
- 最长上升子序列
- 最长上升子序列
- 最长上升子序列
- 最长上升子序列
- 最长上升子序列
- 最长上升子序列
- PHP 安装imagick扩展
- 11月9日 星期三
- 用mac自代的git命令使用笔记
- Notepad++ 的使用(插件)
- Qt修炼手册2_动态设计
- 最长上升子序列(代码实现)
- How to enable Android ConfigFS gadgets
- CentOS7下安装PostGis
- NOIP 模拟赛 那些年,我们学过的文化课 --致已退役的fqk神犇.
- javascript与Jscript区别
- Java中的Runnable、Callable、Future、FutureTask的区别与示例
- 【vijos】【二分图最大匹配】银翼の舞
- 利用ffmpeg框架扩展android平台解码器
- webpack - 如何把es6编译成es5