describir
Dada una matriz de enteros cost , donde cost[i] es el costo de subir el i-ésimo escalón de las escaleras, y el subíndice comienza desde 0. Una vez que pague esta tarifa, puede optar por subir un tramo de escaleras o dos.
Puede elegir comenzar a subir las escaleras desde el escalón con el subíndice 0 o el subíndice 1.
Calcule y devuelva el costo mínimo para llegar a la parte superior de las escaleras.
Rango de datos: la longitud de la matriz satisface 1<= n <= , y los valores en la matriz satisfacen
Introduzca una descripción:
La primera línea ingresa un número entero positivo n, que indica la longitud del costo de la matriz.
La segunda línea ingresa n enteros positivos, que representan el valor del costo de la matriz.
Descripción de salida:
coste mínimo de salida
Ejemplo 1
ingresar:
3
2 5 20
producción:
5
Instrucciones: comenzará en el escalón con el subíndice 1, pagará 5 y subirá dos escalones para llegar a la parte superior de las escaleras. El costo total es 5
Ejemplo 2
ingresar:
10
1 100 1 1 1 90 1 1 80 1
producción:
6
ilustrar:
Comenzará con el paso en el índice 0.
1. Paga 1, sube dos escalones y llega al escalón con subíndice 2.
2. Pague 1, suba dos escalones y llegue al escalón con el subíndice 4.
3. Pague 1, suba dos escalones y llegue al escalón con el subíndice 6.
4. Paga 1, sube un escalón y llega al escalón con el subíndice 7.
5. Pague 1, suba dos escalones y llegue al escalón con el subíndice 9.
6. Pague 1 y suba un escalón para llegar a la parte superior de las escaleras. El costo total es de 6.
código:
import java.util.*;
import java.util.stream.Collectors;
// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
// 注意 hasNext 和 hasNextLine 的区别
int n=Integer.parseInt(in.nextLine());
List<Integer> list=Arrays.stream(in.nextLine().split(""))
.map(Integer::parseInt).collect(Collectors.toList());
int cost;
List<Integer> minCosts=new ArrayList<>();
for(int i=0;i<n;i++){
if(i<2){
minCosts.add(0);
}else{
int a=list.get(i-2)+minCosts.get(i-2);
int b=list.get(i-1)+minCosts.get(i-1);
if(a<=b){
minCosts.add(a);
}else{
minCosts.add(b);
}
}
}
int x=list.get(n-2)+minCosts.get(n-2);
int y=list.get(n-1)+minCosts.get(n-1);
if(x<=y){
cost=x;
}else{
cost=y;
}
System.out.println(cost);
}
}