* 題目:
* 有一根27釐米的細木杆,在第3釐米、7釐米、11釐米、17釐米、23釐米這五個位置上各有一隻螞蟻。
* 木杆很細,不能同時通過一隻螞蟻。
* 開始時,螞蟻的頭朝左還是朝右是任意的,它們只會朝前走或調頭,但不會後退。
* 當任意兩隻螞蟻碰頭時,兩隻螞蟻會同時調頭朝反方向走。
* 假設螞蟻們每秒鐘可以走一釐米的距離。
* 編寫程序,求所有螞蟻都離開木杆的最小時間和最大時間。
*
* @author lupp
*
*/
public class AntMoveQuick {
public static void main(String[] args){
int[] ants = {3,7,11,17,23};
int length = 27;
int temp = 27;
int min = 0;
int max = 0;
//最小時間出現的情況爲螞蟻互相之間都不碰頭,時間的計算方法按照離棍子中點最近的螞蟻離開的時間
for(int i =0;i<5;i++){
if(Math.abs(length/2 - ants[i]) < temp){
temp = Math.abs(length/2 - ants[i]);
min = ants[i];
}
}
System.out.println("最小時間 = "+min);
//當兩個螞蟻相碰時調頭朝相反的方向走可以等價爲兩個螞蟻繼續向原來自己前進的方向前進
//所以求最大時間等價爲找一隻螞蟻,使它到較遠端的距離最大,也就是頭尾螞蟻其中的一隻。
if(length - ants[0] > ants[4])
max = length-ants[0];
else max = ants[4];
System.out.println("最大時間 = "+max);
}
}