链接:https://ac.nowcoder.com/acm/problem/18281
来源:牛客网
时间限制:C/C++ 1秒,其他语言2秒
空间限制:C/C++ 262144K,其他语言524288K
64bit IO Format: %lld
题目描述
一只青蛙出去旅游,因为中国有一句古话说的好:“由简入奢易,由奢入俭难”,所以这只青蛙当看的当前景点比前面看过的景点差的时候,青蛙就会说“不开心”为了避免这只青蛙说“不开心”,并且使青蛙看的景点尽量的多,所以他请你帮忙给他安排一条线路,使青蛙可以看到尽量多的景点,并且不走回头路。
输入描述:
第一行为一个整数n,表示景点的数量
接下来n行,每行1个整数,分别表示第i个景点的质量
输出描述:
一个整数,表示青蛙最多可以看到几个景点
示例1
输入
复制
10
3
18
7
14
10
12
23
30
16
24
输出
复制
6
备注:
景点质量为1到n+23的整数
10<=n<23 10%
23<=n<233 30%
233<=n<2333 60%
2333<=n<23333 100%
思路:最长单调序列
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner sc= new Scanner(System.in);
int n=sc.nextInt();
int num[]=new int[n];
int dp[]=new int[n];
for(int i=0;i<n;i++) {
num[i]=sc.nextInt();
dp[i]=1;
}
int ans=0;
for(int i=0;i<n;i++) {
for(int j=0;j<i;j++) {
if(num[i]>=num[j]) {
dp[i]=Math.max(dp[j]+1,dp[i]);
}
}
if(dp[i]>ans) {
ans=dp[i];
}
}
System.out.println(ans);
}
}