百度2017春招Java程式碼
阿新 • • 發佈:2019-02-13
本文地址:http://blog.csdn.net/shanglianlm/article/details/72588122
問題:
一個數軸上共有N個點,第一個點的座標是度度熊現在位置,第N-1個點是度度熊的家。現在他需要依次的從0號座標走到N-1號座標。
但是除了0號座標和N-1號座標,他可以在其餘的N-2個座標中選出一個點,並直接將這個點忽略掉,問度度熊回家至少走多少距離?
java程式碼實現:
package com.mingo.common;
import java.util.ArrayList;
public class DuDuXiongGoHome {
public static int GoHome(int n, ArrayList<Integer> list){
int result = 0;
int temp = 0;
int j=0;
for(int i=1;i<list.size()-1;i++){
int interval = Math.abs(list.get(i+1)-list.get(i)) + Math.abs(list.get(i)-list.get(i-1)) - Math.abs(list.get(i+1)-list.get(i-1));
if (interval>temp){
j=i;
temp = interval;
}
result += Math.abs(list.get(i+1)-list.get(i));
}
result = result + Math.abs(list.get(1)-list.get(0));
if(j>0){
System.out.println("跳過位置和數字為:("+j+","+list.get(j)+")" );
result = result - temp;
}
return result;
}
public static void main(String[] args) {
// TODO Auto-generated method stub
ArrayList<Integer> list = new ArrayList<Integer>();
for(int i=0;i<4;i++){
int randInt = (int) ((Math.random()-0.5) * 10);
list.add(randInt);
}
System.out.println("輸入陣列為:");
for(Integer li:list){
System.out.print(li+", ");
}
System.out.println();
int value = GoHome(list.size(), list);
System.out.println("最短路徑:"+value);
}
}