计蒜客——求数组最长递减子序列
来源:互联网 发布:摩天手无线鼠标 知乎 编辑:程序博客网 时间:2024/05/17 05:09
给定一个整数序列,输出它的最长递减(注意不是“不递增”)子序列。
输入包括两行,第一行包括一个正整数N(N<=1000),表示输入的整数序列的长度。第二行包括用空格分隔开的N个整数,整数范围区间为[-30000,30000]。
输出为一行,最长递减子序列的结果,数字间用空格分隔(测试case中只会有一个最长递减子序列)。
样例输入
89 4 3 2 5 4 3 2
样例输出
9 5 4 3 2import java.util.Scanner;/** * 单调减子序列 * @author yurong * */public class Main {public static void main(String[] args) {// TODO Auto-generated method stubScanner console = new Scanner(System.in);int n = console.nextInt();int[] a = new int[n];int[] dp = new int[n];for(int i = 0; i < n; i++){a[i] = console.nextInt();}dp[0] = 1;int max = 1;for(int i = 1;i<n;i++){//dp[i]表示前i个数中最长减子序列的个数dp[i] = 1;for(int j = 0; j < i; j++){if(a[j]>a[i]){dp[i] = Math.max(dp[i], dp[j]+1);}}if(dp[i]>=max){max = dp[i];}}int[] aa = new int[max];aa[max-1] = Integer.MIN_VALUE;int m = max;for(int i = n-1,j =0; i >=0 ; i--){if(dp[i] ==max ){//System.out.println(i);aa[j] = a[i];j++;m--;}else{if(dp[i]==m&&a[i]>aa[j-1]){aa[j] = a[i];j++;m--;}}}for(int i = max-1;i>=0;i--){if(i!=0){System.out.print(aa[i]+" ");}else{System.out.print(aa[i]);}}//System.out.println(max);}}
阅读全文
0 0
- 计蒜客——求数组最长递减子序列
- 求数组的最长递减子序列
- 计蒜客-求数组的最长递减子序列
- 数据结构——算法之(025)( 求一个数组的最长递减子序列)
- 求最长递减子序列
- 动态规划——数组中最长递减子序列
- 动态规划——数组中最长递减子序列
- 动态规划——数组中最长递减子序列
- 动态规划——数组中最长递减子序列
- 求一个数组的最长递减子序列
- 求一个数组的最长递减子序列
- 求一个数组的最长递减子序列
- 求一个数组的最长递减子序列
- 求一个整数数组最长递减子序列
- coding - 求数组的最长递减子序列
- 求一个数组的最长递减子序列
- 求一个数组的最长递减子序列
- 求数组的最长递减子序列 (dp)
- 计蒜客——传球游戏
- KNN算法
- 接口有哪些考点
- bootstrap用 juqery Autocomplete组件实现搜索框自动提示
- concurrent包分析-阻塞双端队列BlockingDeque及其实现类
- 计蒜客——求数组最长递减子序列
- HTML标签
- html 中 id class type name value 简要理解
- 1
- 报错java.lang.UnsatisfiedLinkError: dlopen failed: "/data/app/cn.*****/lib/arm64/libGlobal.so" is 3
- AndroidStudio/gradle 配置打包输出文件名/输出版本号渠道
- BZOJ2683: 简单题
- Object和Objects的区别
- Centos window界面与命令行