Problem B: 动态规划基础题目之最长上升子序列
来源:互联网 发布:程序员表白代码 编辑:程序博客网 时间:2024/06/05 22:29
Problem B: 动态规划基础题目之最长上升子序列
Time Limit: 1 Sec Memory Limit: 128 MBSubmit: 98 Solved: 55
[Submit][Status][Web Board]
Description
一个数的序列bi,当b1 < b2 < ... <bS的时候,我们称这个序列是上升的。对于给定的一个序列(a1, a2, ...,aN),我们可以得到一些上升的子序列(ai1, ai2, ...,aiK),这里1 <= i1 < i2 < ... <iK <= N。比如,对于序列(1, 7, 3, 5, 9, 4, 8),有它的一些上升子序列,如(1, 7), (3, 4, 8)等等。这些子序列中最长的长度是4,比如子序列(1, 3, 5, 8).
你的任务,就是对于给定的序列,求出最长上升子序列的长度。
Input
输入的第一行是序列的长度N (1 <= N <= 1000)。第二行给出序列中的N个整数,这些整数的取值范围都在0到10000。
Output
最长上升子序列的长度。
Sample Input
71 7 3 5 9 4 8
Sample Output
4
#include <stdio.h>#include <stdlib.h>#define max(a,b) a>b?a:bint main(){ int i,j,n,a[1000],b[1000],maxl=0; //a[]用户来存储元素,b[]用来存储上升序列长度 scanf("%d",&n); for(i=0;i<n;i++) scanf("%d",&a[i]); b[0]=1; //表示子序列最右边的长度为1 for(i=1;i<n;i++) { b[i]=1; //初始化每种情况最小为1 for(j=0;j<i;j++) { if(a[i]>a[j]) //从0到i查找大于当前元素的值 b[i]=b[j]+1; //若找到子序列长度加1 } } for(i=0;i<n;i++) maxl=max(maxl,b[i]); //不断比较找出最长子序列 printf("%d",maxl); return 0;}
0 0
- Problem B: 动态规划基础题目之最长上升子序列
- YTU.3135: 动态规划基础题目之最长上升子序列
- YTU OJ 3135: 动态规划基础题目之最长上升子序列(Java解题)
- 动态规划之最长上升子序列
- 【动态规划】 之 最长上升子序列
- DP 动态规划 Problem B 1002 求最长上升子序列的长度
- c++动态规划基础——最长上升子序列
- poj 1836 (动态规划之最长上升子序列)
- 动态规划(DP)之最长上升子序列
- 动态规划学习之最长上升子序列
- 动态规划(DP)之最长上升子序列问题
- 简单动态规划之最长上升子序列
- 经典动态规划之最长上升子序列
- C++动态规划算法之最长上升子序列
- 动态规划专题之最长上升子序列
- 算法学习之动态规划--最长上升子序列
- 动态规划:最长上升子序列之基础(经典算法 n^2)
- 动态规划:最长上升子序列
- HttpEntity的类型及其使用
- html5第八课时,属性前缀
- Android studio如何实现短信验证
- Shell符号及各种解释对照表
- html5第八课时,长度单位
- Problem B: 动态规划基础题目之最长上升子序列
- 使用来自百度的FIS 打包项目初探笔记
- 理解Nginx, uWSGI, Flask之间的关系
- windows环境
- leetcode 3. Longest Substring Without Repeating Characters
- C++必读书籍推荐
- C++学习笔记4:对象和类
- 关于异常
- html5第八课时,变形效果