import java.util.Scanner;
public class Main {
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner scanner=new Scanner(System.in);
int n=scanner.nextInt();
int a[]=new int[n+5];
for (int i = 1; i <= n; i++) {
a[i]=scanner.nextInt();
}
int dp[]=new int[n+5];
//0 1 0 2 1 0
//0
dp[1]=a[1];//0
dp[2]=a[2];//1
for (int i = 3; i < n+1; i++) {
dp[i]=Math.min(dp[i-1]+a[i], dp[i-2]+a[i]);
}
System.out.println(dp[n]);
}
}
个人感觉这题和跳楼梯很像,都是跳1级跳2级的情况,那么我们想要求最小值,针对i号,肯定是dp[i]=Math.min(dp[i-1]+a[i], dp[i-2]+a[i]);初始化就直接给前两个赋值就行



京公网安备 11010502036488号