1. 程式人生 > >百度2017春招Java程式碼

百度2017春招Java程式碼

本文地址: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); } }