音符

import java.util.*;

public class Main {
	
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		while (sc.hasNext()) {
			int n = sc.nextInt();
			int[] A = new int[n];
			for(int i=0;i<n;i++){
				A[i] = sc.nextInt();
			}
			int[] dp = new int[n+1];
			dp[0] = 0;
			dp[1] = A[0];
			if(n==1 ){
				System.out.println(A[0]);
			}else if(n==2){
				System.out.println(A[0]+A[1]);
			}else{
				dp[2] = A[0]+A[1];
				int leftSum = A[0];
				int rightSum = A[1];
				int left = 0;
				int right = 1;
				for(int i=3;i<=n;i++){
					if(i==3){
						dp[i] = Math.min(Math.abs(A[left]-A[i-1])+rightSum, leftSum+Math.abs(A[right]-A[i-1]));
						if(Math.abs(A[left]-A[i-1])+rightSum >= leftSum+Math.abs(A[right]-A[i-1])){
							right = i-1;
						}else{
							left = i-1;
						}
					}else{
						dp[i] = Math.min(Math.abs(A[left]-A[i-1])+(left>0?dp[i-1]:dp[i-1]-A[left]), (right>0?dp[i-1]:dp[i-1]-A[right])+Math.abs(A[right]-A[i-1]));
						if(Math.abs(A[left]-A[i-1]) >= Math.abs(A[right]-A[i-1])){
							right = i-1;
						}else{
							left = i-1;
						}
					}
					
				}
				System.out.println(dp[n]);

			}
			
		}
        sc.close();
	}
}
感觉快要写出来了,没时间考完又写了下,有点乱。。。等题目开放后去验证下通过多少。。。#网易#
全部评论

相关推荐

点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务