Project 4:Longest Ordered Subsequence
Problem description
A numeric sequence of ai is ordered if a1 < a2 < … < aN. Let the subsequence of the given numeric sequence (a1, a2, …, aN) be any sequence (ai1, ai2, …, aiK), where 1 <= i1 < i2 < … < iK <= N. For example, sequence (1, 7, 3, 5, 9, 4, 8) has ordered subsequences, e. g., (1, 7), (3, 4, 8) and many others. All longest ordered subsequences are of length 4, e. g., (1, 3, 5, 8).
Your program, when given the numeric sequence, must find the length of its longest ordered subsequence.
Input
The first line of input contains the length of sequence N. The second line contains the elements of sequence - N integers in the range from 0 to 10000 each, separated by spaces. 1 <= N <= 1000
Output
Output must contain a single integer - the length of the longest ordered subsequence of the given sequence.
Sample Input
7
1 7 3 5 9 4 8
Sample Output
4
完成程序
#include <stdio.h>
#define N 10000
int main()
{
int i,n,ans=1,j;
int num[N];
int a[N];
int max;
scanf("%d", &n);
for(i=0;i<n;i++)
{
max=0;
scanf("%d", &num[i]);
for(j=0;j<i;j++)
{
if(num[j]<num[i] && a[j]>max)
max=a[j];
}
a[i]=max+1;
if(a[i]>ans) ans=a[i];
}
printf("%d\n", ans);
return 0;
}
使用动态规划后运行时间大有下降
首先我们定义变量数组a[N]来保存第n个数为最大数的最长上升子列。动态规划的思路为每增加一个数就判断以该数为最大数最长上升子列,然后与最长的ans做比较。如何找到该数的最长上升子列呢?首先,这个数要比该子列的前面一个数大即为num[j]小于num[i],这样才能成为最长上升子列的最后一个数。然后,该子列还需是在所有符合第一个条件的子列中最长的一个。及为变量max所起的作用。至此动态规划完毕。
通过全部子列列出后对比长度的解法
#include <stdio.h>
int main()
{
int N,i,tmp,j,num,max=1,k;
int a[1000];
scanf("%d",&N);
{
for(i=0;i<N;i++)
scanf("%d",&a[i]);
for(i=0;i<N;i++)
{
tmp=a[i];
for(k=1;k<N-i;k++)
{
num=1;
tmp=a[i];
for(j=i+k;j<N;j++)
{
if(a[j]>tmp)
tmp=a[j],num++;
}
if(num>max) max=num;
}
}
printf("%d\n",max);
}
return 0;
}
这个效率会低很多。
Project 4:Longest Ordered Subsequence的更多相关文章
- POJ 2533 Longest Ordered Subsequence(最长上升子序列(NlogN)
传送门 Description A numeric sequence of ai is ordered if a1 < a2 < ... < aN. Let the subseque ...
- POJ 2533 Longest Ordered Subsequence(LIS模版题)
Longest Ordered Subsequence Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 47465 Acc ...
- POJ 2533 Longest Ordered Subsequence 最长递增序列
Description A numeric sequence of ai is ordered if a1 < a2 < ... < aN. Let the subsequenc ...
- POJ2533——Longest Ordered Subsequence(简单的DP)
Longest Ordered Subsequence DescriptionA numeric sequence of ai is ordered if a1 < a2 < ... &l ...
- poj 2533 Longest Ordered Subsequence 最长递增子序列
作者:jostree 转载请注明出处 http://www.cnblogs.com/jostree/p/4098562.html 题目链接:poj 2533 Longest Ordered Subse ...
- POJ2533 Longest ordered subsequence
Longest Ordered Subsequence Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 41984 Acc ...
- POJ2533:Longest Ordered Subsequence(LIS)
Description A numeric sequence of ai is ordered if a1 < a2 < ... < aN. Let the subsequence ...
- POJ2533 Longest Ordered Subsequence 【最长递增子序列】
Longest Ordered Subsequence Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 32192 Acc ...
- poj 2533 Longest Ordered Subsequence(LIS)
Description A numeric sequence of ai is ordered ifa1 <a2 < ... < aN. Let the subsequence of ...
随机推荐
- 【我的漫漫跨考路】数据结构之单链表线性存储实现 Beta
正文之前 昨天晚上阶段性的完成了一部分数学的复习,所以今天打算撸一撸代码,然后发现提电脑忘指针.所以自己磕磕盼盼,对照了一下网上的代码,总算把线性存储单链表的数据类型实现,给自己写出来了. 废话不多说 ...
- Python 协程总结
Python 协程总结 理解 协程,又称为微线程,看上去像是子程序,但是它和子程序又不太一样,它在执行的过程中,可以在中断当前的子程序后去执行别的子程序,再返回来执行之前的子程序,但是它的相关信息还是 ...
- oracle 基础(上)
sql 语句氛围以下三种类型: dml:Date Manipulation Language 数据操纵语言 DDL:Data Definition Language 数据定义语言 DCL:Data ...
- TensorFlow学习笔记2——数据类型及简单运算
0. 小试牛刀 首先,激活tensorflow环境( source activate tensorflow ),随后在ipython里: import tensorflow as tf sess = ...
- VIM的字符编码设置
vim 编码方式的设置和所有的流行文本编辑器一样,Vim 可以很好的编辑各种字符编码的文件,这当然包括UCS-2.UTF-8 等流行的 Unicode 编码方式.然而不幸的是,和很多来自 Linux ...
- Python正则匹配
使用Re模块 首先生成一个匹配模式pattern,如pattern='.test' 然后使用re.match(pattern,str)或者search()匹配调用 match跟search的区别: m ...
- Promise与异步
不知道promise,大家现在用了吗?如果还不了解的话,今天就来对了-基础的了解起来- 正文从这开始- 接触过promise的的都知道它的应用场景和用途,Promise可以用来避免异步操作函数里的嵌套 ...
- 改造继续之eclipse集成tomcat开发spring mvc项目配置一览
在上一篇的环境配置中,你还只能基于maven开发一个javase的项目,本篇来看如果开发一个web项目,所以还得配置一下tomcat和spring mvc. 一:Tomcat安装 在.net web开 ...
- LAMP环境的搭建(三)----PHP7的安装
centos自带的PHP源是5.4版本的.如果需要安装PHP 5.4 直接输入 yum install php -y 即可 因为PHP7性能巨大的提升,因此本文选择安装PHP7 如果已经安装过了php ...
- 7.28.2 static关键字(静态和成员)
成员是对象级别的,访问成员必须用"引用.",如果用"类名."访问会报错!如果用空引用访问成员则会发生控空指针异常! 静态是类级别的,访问静态必须用类" ...