最长上升子序列 POJ2533

简介:
Longest Ordered Subsequence
Time Limit: 2000MS   Memory Limit: 65536K
Total Submissions: 18853   Accepted: 8147

Description

A numeric sequence of  ai is ordered if  a1 <  a2 < ... <  aN. Let the subsequence of the given numeric sequence ( a1a2, ...,  aN) be any sequence ( ai1ai2, ...,  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 file 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 file 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

Source

Northeastern Europe 2002, Far-Eastern Subregion
 
题目的大意是:给出一序列,求出该序列的最长上升子序列的最大长度。
思路:用数组a[]存储序列,b[i]表示以a[i]为结尾的序列的最大长度。
因此要求出b[i]的最大值,即求出max{b[0],b[1]....b[i-1]}的最大值,那么b[i]的最大值为max{b[0],b[1]....b[i-1]}+1;
即可写出状态方程:b[i]=max{b[0],b[1].....b[j]}+1;(0<=j<i&&a[j]<a[i]),然后求出数组b[]中的最大值即为所求。
#include<iostream>
using  namespace  std;
 
int  main( void )
{
     int  i,j,n;
     int  a[1001];
     int  b[1001];
     int  max;
     scanf ( "%d" ,&n);
     for (i=0;i<n;i++)
     {
         scanf ( "%d" ,&a[i]);
         b[i]=1;
     }
     for (i=0;i<n;i++)
     {
         max=0;
         for (j=0;j<i;j++)
         {
             if (a[i]>a[j]&&b[j]>max)
             {
                 max=b[j];
             }
         }
         b[i]=max+1;
     }
     max=0;
     for (i=0;i<n;i++)
     {
         if (max<b[i])
             max=b[i];
     }
     printf ( "%d\n" ,max);
     return  0;
}
 
 
本文转载自海 子博客园博客,原文链接:http://www.cnblogs.com/dolphin0520/archive/2011/07/09/2102044.html 如需转载自行联系原作者
相关文章
wangEditor自动获取焦点
wangEditor自动获取焦点
459 0
|
10月前
|
弹性计算 自然语言处理 监控
深度测评OS Copilot
通过阿里云ECS控制台的Workbench远程连接登录服务器后,使用命令`sudo yum install -y os-copilot`安装OS Copilot。成功安装后,配置环境变量并用`rpm -q os-copilot`验证安装。使用`co 当前系统健康度`检查系统状态,加`-t`选项可直接进入agent模式,提升响应速度。创建任务文件并通过`co -f task -t`实现自动化批量处理,提高效率约30%。OS Copilot还提供自动化管理、简化命令行操作和日志分析等优势,适用于高效管理多个服务器实例的企业环境。
208 17
|
小程序 Java 程序员
扫盲:Java 后端开发常用的 10 种第三方服务(2)
扫盲:Java 后端开发常用的 10 种第三方服务
446 0
扫盲:Java 后端开发常用的 10 种第三方服务(2)
|
5天前
|
云安全 人工智能 安全
AI被攻击怎么办?
阿里云提供 AI 全栈安全能力,其中对网络攻击的主动识别、智能阻断与快速响应构成其核心防线,依托原生安全防护为客户筑牢免疫屏障。
|
15天前
|
域名解析 人工智能
【实操攻略】手把手教学,免费领取.CN域名
即日起至2025年12月31日,购买万小智AI建站或云·企业官网,每单可免费领1个.CN域名首年!跟我了解领取攻略吧~
|
9天前
|
安全 Java Android开发
深度解析 Android 崩溃捕获原理及从崩溃到归因的闭环实践
崩溃堆栈全是 a.b.c?Native 错误查不到行号?本文详解 Android 崩溃采集全链路原理,教你如何把“天书”变“说明书”。RUM SDK 已支持一键接入。
605 214
|
存储 人工智能 监控
从代码生成到自主决策:打造一个Coding驱动的“自我编程”Agent
本文介绍了一种基于LLM的“自我编程”Agent系统,通过代码驱动实现复杂逻辑。该Agent以Python为执行引擎,结合Py4j实现Java与Python交互,支持多工具调用、记忆分层与上下文工程,具备感知、认知、表达、自我评估等能力模块,目标是打造可进化的“1.5线”智能助手。
847 61
|
7天前
|
人工智能 移动开发 自然语言处理
2025最新HTML静态网页制作工具推荐:10款免费在线生成器小白也能5分钟上手
晓猛团队精选2025年10款真正免费、无需编程的在线HTML建站工具,涵盖AI生成、拖拽编辑、设计稿转代码等多种类型,均支持浏览器直接使用、快速出图与文件导出,特别适合零基础用户快速搭建个人网站、落地页或企业官网。
1251 157