题解 | #Redraiment的走法#
Redraiment的走法
https://www.nowcoder.com/practice/24e6243b9f0446b081b1d6d32f2aa3aa
解题思路为:从左到右,记录走到每个桩的最大值。
那么求走到中间某一个桩(B)的最大值时,
就是前面比B桩小的桩的最大值上加1,就是走到B桩的值,在这些值中取最大值就是到B桩的最大值
java代码以及注释如下
import java.util.*;就是前面比B桩小的桩的最大值上加1,就是走到B桩的值,在这些值中取最大值就是到B桩的最大值
java代码以及注释如下
// 思路为从前到后到记录到第i个桩 走的步数最多的数,
public class Main {
static int max = 0;
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
// 注意 hasNext 和 hasNextLine 的区别
while (in.hasNextInt()) { // 注意 while 处理多个 case
int a = in.nextInt();
if(a == 1){
System.out.println(1);
break;
}
// 元数据
int[] data = new int[a];
// 记录数据
int[] num = new int[a];
// 赋值
for (int i = 0 ; i < a ; i ++) {
data[i] = in.nextInt();
}
// 求走到第i个桩,最大的步数
for(int i = 1 ; i < a ; i ++){
// 第j个桩可否走到第i个桩,可以的话,在走到第j个桩的基础上加一就是走到第i个桩的值
for(int j = 0; j<i ; j++){
if(data[j] < data[i]){
num[i] = Math.max(num[i],num[j]+1);
}
}
}
Arrays.sort(num);
System.out.println(num[num.length-1] +1);
}
}
}
#22届#
查看15道真题和解析