标签:个数 ble cout class idt -- output sample 序列
问题背景
|
动态规划入门-第13题
|
试题描述
|
设有整数序列b1,b2,b3,…,bm,若存在i1<i2<i3<…<in,且bi1<bi2<bi3<…<bin,则称 b1,b2,b3,…,bm中有长度为n的不下降序列bi1,bi2,bi3,…,bin。求序列b1,b2,b3,…,bm中所有长度(n)最大不下降子序列。例如3,18,7,14,10,12,23,41,16,24,其中3,18,23,24就是一个长度为4的不下降序列,同时也有3,7,10,12,16,24长度为6的不下降序列。
|
输入格式
|
第一行为n,表示n个数
第二行n个数 |
输出格式
|
最长不下降子序列的长度
|
输入示例
|
10
3 18 7 14 10 12 23 41 16 24 |
输出示例
|
6
|
注释说明
|
N小于5000
for each num <=maxint |
【分析】
dp入门,就是lis啦,不过这题目描述有点迷,看题目是不下降,看描述是上升,其实还是不下降,水题。
【代码】
1 #include <bits/stdc++.h> 2 using namespace std; 3 4 int n, a[5050], dp[5050], ans; 5 6 int main() { 7 cin >> n; 8 for (int i=1;i<=n;++i) 9 cin >> a[i]; 10 for (int i=1;i<=n;++i) { 11 dp[i]=1; 12 for (int j=i-1;j>0;--j) 13 if (a[j]<=a[i]) 14 dp[i]=max(dp[i], dp[j]+1); 15 } 16 for (int i=1;i<=n;++i) 17 ans=max(ans, dp[i]); 18 cout << ans << endl; 19 }
---恢复内容结束---
标签:个数 ble cout class idt -- output sample 序列
原文地址:http://www.cnblogs.com/shamman/p/7282739.html