笔试题算法系列(六)百度度度熊回家
时间限制:1秒
空间限制:32768K
一个数轴上共有N个点,第一个点的坐标是度度熊现在位置,第N-1个点是度度熊的家。现在他需要依次的从0号坐标走到N-1号坐标。
但是除了0号坐标和N-1号坐标,他可以在其余的N-2个坐标中选出一个点,并直接将这个点忽略掉,问度度熊回家至少走多少距离?
但是除了0号坐标和N-1号坐标,他可以在其余的N-2个坐标中选出一个点,并直接将这个点忽略掉,问度度熊回家至少走多少距离?
输入描述:
输入一个正整数N, N <= 50。
接下来N个整数表示坐标,正数表示X轴的正方向,负数表示X轴的负方向。绝对值小于等于100
输出描述:
输出一个整数表示度度熊最少需要走的距离。
输入例子1:
4 1 4 -1 3
输出例子1:
4
代码如下:
1 import java.lang.Math; 2 import java.util.Scanner; 3 public class Main{ 4 public static void main(String[] args){ 5 Scanner sc = new Scanner(System.in); 6 String[] line; 7 while(sc.hasNext()){ 8 line = sc.nextLine().split(" "); 9 int n = Integer.parseInt(line[0]); 10 line = sc.nextLine().split(" "); 11 int[] dot = new int[n]; 12 for(int i=0; i<n; i++){ 13 dot[i] = Integer.parseInt(line[i]); 14 } 15 int minDistance = Integer.MAX_VALUE; 16 for(int i=1; i<n-1; i++){ 17 int distance = 0; 18 for(int j=1; j<n; j++){ 19 if(j==i){ 20 j++; 21 distance += Math.abs(dot[j]-dot[j-2]); 22 }else{ 23 distance += Math.abs(dot[j]-dot[j-1]); 24 } 25 } 26 if(distance < minDistance){ 27 minDistance = distance; 28 } 29 } 30 System.out.println(minDistance); 31 } 32 sc.close(); 33 } 34 }