这大概是我做出来的第一个DP题目了。。

假装完全是自己想出来的,嗯。。

题目:鹅厂实习生笔试。。虽然我没投。。但还是帮小伙伴做题了。。

深搜超时,那就DP

import java.util.*;

public class Main {
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		int n = sc.nextInt();
		int[] height = new int[n];
		for(int i = 0; i < n; i++) {
			height[i] = sc.nextInt();
		}
		if(n <= 2) {
			System.out.println(0);
			return;
		}
		int[][] matrix = new int[n+1][2];
		
		matrix[0][0] = 0;
		matrix[0][1] = 0;
		matrix[1][0] = height[0];
		matrix[1][1] = 0;
		
		for(int i = 2; i <= n; i++) {
			matrix[i][0] = Math.min(matrix[i-1][0] + height[i-1], matrix[i-1][1] + height[i-1]);
			matrix[i][1] = Math.min(matrix[i-1][0], matrix[i-2][0]);
		}
		
		int ans = Math.min(matrix[n][0], matrix[n][1]);
		ans = Math.min(ans, matrix[n-1][0]);
		System.out.println(ans);
	}
}

猜你喜欢

转载自blog.csdn.net/sinat_15901371/article/details/88384161