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]);初始化就直接给前两个赋值就行