题意

本题求从1 到 n的最长上升子序列的长度

分析

最优化问题
考虑dp
我们求1-n最长上升子序列长度
假设记录在dp[n]中
假设我们已经知道了1—n-1的以第n-1为最后一个元素的最长上升序列的长度
那么我们拿到第n个元素不就可以判断如果这个n比n-1位置上的元素大
那么就让dp[n] = dp[n-1]+1不就可以了吗
那么dp[n-1]又怎么得到
我们需要得到dp[n-2]
那么dp[n-2]咋知道 我们需要dp[n-3]。。。
所以我们不如从前面开始推
设置dp数组 dp[i]表示以第I个元素为结尾的从1到n最长上升子序列的长度
也就是我们要从第一个元素x开始向后扫
如果后面的元素比x大 那么就让dp[I] = dp[1]+1;
那么这里我们看到需要把dp[i]全部都初始化为1
只有这样才能得到正确累计的数量
可是我们发现 如果每个元素都做此相同步骤
我们需要考虑就是如果这个dp[i]本来就比dp[枚举元素]+1 大 我们就不能直接赋值了
因为这个元素可能已经被前面的某些元素已经搞得比较大了
所以我们得到最终的递推关系
dp[j]=max(dp[j],dp[i]+1);dp[j] = max(dp[j] ,dp[i]+1);

CODE

#include<bits/stdc++.h>
using namespace std;
int a[1010],dp[1010];int main()
{int n;scanf("%d",&n);for(int i=1;i<=n;i++){scanf("%d",&a[i]);dp[i]=1;}for(int i=1;i<n;i++){for(int j=i+1;j<=n;j++){if(a[j]>a[i])dp[j] = max(dp[i]+1,dp[j]);}}int ans=-1;for(int i=1;i<=n;i++){ans = max(dp[i],ans);}printf("%d\n",ans);return 0;
}

POJ 2533 Longest Ordered Subsequence 动态规划相关推荐

  1. OpenJudge 2757 最长上升子序列 / Poj 2533 Longest Ordered Subsequence

    1.链接地址: http://poj.org/problem?id=2533 http://bailian.openjudge.cn/practice/2757 2.题目: 总Time Limit: ...

  2. POJ 2533 Longest Ordered Subsequence

    大致题意:求最长升子序列. f[i]:前i+1个元素中包括第i+1个的最长升子序列. // Time 32ms; Memory 224K #include<iostream> using ...

  3. 【POJ - 2533】Longest Ordered Subsequence(四种方法解决最长上升子序列 含二分优化版本)

    题干: Time Limit: 2000MS   Memory Limit: 65536K Total Submissions: 41944   Accepted: 18453 Description ...

  4. Longest Ordered Subsequence 最长上升子序列+DP

    A numeric sequence of ai is ordered if a1 < a2 < - < aN. Let the subsequence of the given n ...

  5. Rosalind Java|Longest Increasing Subsequence动态规划算法

    Rosalind编程问题之计算集合中最长的递增元素子集. Longest Increasing Subsequence Problem: A subsequence of a permutation ...

  6. scau实验题 8596 Longest Ordered Subsequence

    其实解释POJ 2533 原题 最长上升子序列,用O(N*N)算法和o(n*logn)算法分别实现,学校OJ的数据比较弱,就算写成最长不下降子序列也可以通过,但是在POJ上是WA的 而题意本身应该是严 ...

  7. LeetCode Longest Increasing Subsequence(动态规划、二分法)

    问题:求数组的最长上升子序列问题 思路:第一种方法使用动态规划方法,用dp(i)来表示从0到i之间的最长上升子序列的长度.状态转移方程为dp(i)=max{dp(j)+1},其中0<=j< ...

  8. POJ-2533 Longest Ordered Subsequence

    http://poj.org/problem?id=2533 该题是最裸的LIS题,这里有两种方法. 代码如下: #include <cstdio>#include <cstring ...

  9. HOJ 10027 Longest Ordered Subsequence Extention

    初做此题时,的确注意到了数据范围,如果用动态规划做的话,两层搜索,时间复杂度为o(n^2),n达50000,铁定超时.但是我还是用dp交了一次,果然tle了.想在10001的基础上优化一下,但是苦于没 ...

最新文章

  1. NLP/CV模型跨界进行到底,视觉Transformer要赶超CNN?
  2. Spring Boot配置IDEA无法创建Spring Initializr项目
  3. Netty解决粘包和拆包问题的四种方案
  4. Android开发之代码开发部分字符串变色
  5. python-函数的定义与调用
  6. spring 5.x(1)-----Spring Framework 5.x中的新功能
  7. 求出数组中超过一半的数
  8. 关于mysql的wait_timeout参数 设置不生效的问题【转】
  9. PMP试题 | 每日一练
  10. Flink 异步IO优化任务
  11. bt种子文件文件结构
  12. java的封装 继承 多态_java继承多态是什么意思?java封装继承多态的例子
  13. 萌言萌语|测试工作日报及总结
  14. DVWA--SQL Injection(SQL注入-非盲注)(全难度)
  15. mt6735通用recovery_Mtkroot ,arm64通用使用无需bl或者rec,安卓7以下使用最佳!
  16. 初学者这样玩 TypeScript,迟早进大厂系列!
  17. LNMP环境搭建之编译安装指南(php-5.3.27.tar.gz)
  18. 某建筑设计研究院“综合布线管理软件”应用实践
  19. STM32系列 STM32F4xx SPI Flash-读写操作
  20. 常用温度控制方法原理

热门文章

  1. WPF中打印问题的探讨[转]
  2. .Net读取xlsx文件Excel2007
  3. filecoin矿机_萤火虫区块链-上海|南京|杭州|苏州萤火虫ipfs|filecoin矿机-奥古斯都分布式存储...
  4. 数组转换为字符串方法
  5. myeclipse链接数据库,SQL语句实现增删改查
  6. Error inflating class xxx.view
  7. 跳出内层循环 使用 for of 代替 map
  8. sign check fail: check Sign and Data Fail!-错误处理
  9. 谭浩强c语言规范化的指数形式,C语言程序设计谭浩强第四期末复习重点.docx
  10. PHP opencv Dlib,Face_Recognition