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 ...
随机推荐
- html5 textarea 文本框根据输入内容自适应高度
<!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <m ...
- Unity 粒子系统 特效 移除屏幕外面后再移回来 不会显示问题
今天遇到的问题 勾选Particle System组件中的Sub Emitters属性 如图
- SpringBoot集成MyBatis的分页插件PageHelper(回头草)
俗话说:好
- Apache POI 一键上传(导入excel文件到数据库)
import cn.XXXX.bos.utils.PinYin4jUtils; import org.apache.commons.lang3.StringUtils; // HSSF:操作07版本之 ...
- Maven干货
好处: 1. 依赖管理:对jar包统一管理 2. 项目构建: 项目编码完成后,对项目进行编译.测试.打包.部署.之前项目构建通过eclipse工具实现.今天学习新的工具也可以实现这些过程.比如:通过m ...
- Clang之语法抽象语法树AST
语法分析器的任务是确定某个单词流是否能够与源语言的语法适配,即设定一个称之为上下文无关语言(context-free language)的语言集合,语法分析器建立一颗与(词法分析出的)输入单词流对应的 ...
- 【PL/SQL Developer】动态执行表不可访问,本会话的自动统计被禁止
在执行菜单里你可以禁止统计,或在v_$session,v_$sesstat 和 v_$statname 表里获得select权限 解决办法 [oracle@localhost ~]$ sqlplus ...
- 7.21.01 if语句
if语句 一个if语句包含一个布尔表达式和一条或多条语句. 语法 if语句的用语法如下: if(布尔表达式) { //如果布尔表达式为true将执行的语句 } 如果布尔表达式的值为true,则执行if ...
- BotVS趋势交易策略-MACD
MACD低买高卖自动跟单滑动止损策略 , 基于Python实现. 交叉后前一柱指金叉后的第一柱的值, 交叉后前一柱指金叉前的最后一个柱的值, 滑动价格指下单时加的价格,比如买单会现价加上这个价格,卖单 ...
- 《Java从入门到放弃》JavaSE入门篇:面向对象概念(入门版)
要知道什么是面向对象,你首先要有个对象吧,所以······没有对象的可以回家洗洗睡了· 好吧,前面是开玩笑,要说明什么是面向对象,我们还是先 例子: 小呆:"小傻,你今天早餐吃的什么?&qu ...