java题目 HJ103 Redraiment的走法

 

描述

Redraiment是走梅花桩的高手。Redraiment可以选择任意一个起点,从前到后,但只能从低处往高处的桩子走。他希望走的步数最多,你能替Redraiment研究他最多走的步数吗?
 
数据范围:每组数据长度满足 1 \le n \le 200 \1n200  , 数据大小满足 1 \le val \le 350 \1val350 

 

 

输入描述:

数据共2行,第1行先输入数组的个数,第2行再输入梅花桩的高度

输出描述:

输出一个结果

示例1

输入:
6
2 5 1 5 4 5 
输出:
3
说明:
6个点的高度各为 2 5 1 5 4 5
如从第1格开始走,最多为3步, 2 4 5 ,下标分别是 1 5 6
从第2格开始走,最多只有1步,5
而从第3格开始走最多有3步,1 4 5, 下标分别是 3 5 6
从第5格开始走最多有2步,4 5, 下标分别是 5 6
所以这个结果是3。     

 

 1 import java.util.*;
 2 
 3 public class Main {
 4     public static void main(String[] args) {
 5         Scanner sc = new Scanner(System.in);
 6         while(sc.hasNext()) {
 7             int n = sc.nextInt();
 8             int[] big =new int[n];
 9             for(int i =0; i<n; i++) {
10                 big[i] = sc.nextInt();
11             }
12             count(big);
13         }
14     }
15     
16     //动态规划最长递增序列
17 public static void count(int []nums){
18     int []dp = new int[nums.length];
19         //初始化为1
20     Arrays.fill(dp,1);
21     int max = 1;
22     for(int i=1; i<nums.length; i++) {
23         for(int j=0; j<i; j++) {
24             if(nums[j] < nums[i]) {  // i位置值大于j位置
25                 dp[i] = Math.max(dp[i], dp[j] +1);  //则在j位置的dp值上+1,然后取大的
26             }
27             max= Math.max(max,dp[i]);
28         }
29     }
30         System.out.println(max);
31     }
32 }

 

posted @ 2022-03-14 18:27  海漠  阅读(256)  评论(0编辑  收藏  举报