1. 程式人生 > >晚上,有n個人過河,分別需要n1、n2、n3、nn分鐘。只有一把手電筒,過河的必要條件是有手電筒。最多可以兩個人同時過河,但必須以兩人中較慢的那個人的速度過去。問:所有人都過河,至少需幾分鐘。

晚上,有n個人過河,分別需要n1、n2、n3、nn分鐘。只有一把手電筒,過河的必要條件是有手電筒。最多可以兩個人同時過河,但必須以兩人中較慢的那個人的速度過去。問:所有人都過河,至少需幾分鐘。

package Arrays;

import java.util.Arrays;
import java.util.Scanner;

public class ToArray {

	private static int sum=0;
	public int bridge(int []arr,int n) {
		if(n==1||n==2)
			return arr[n-1]; 
		else if (n==3) {
			return arr[0]+arr[1]+arr[n-1];
		}
		else {
			return bridge(arr, n-2)+Math.min(arr[n-1]+arr[n-2]+2*arr[0], arr[n-1]+arr[1]*2+arr[0]);
		}
	}
	public static void main(String[] args) {
		System.out.print("請輸入過河人數:");
		Scanner scanner=new Scanner(System.in);
		/*String string=scanner.nextLine();
		System.out.println(string);*/
		int count=scanner.nextInt();
		int []arr=new int[count];
		int j=0;
		System.out.print("請輸入每個人過河所需時間:");
		while(count>0) {
			arr[j]=scanner.nextInt();
			count-=1;
			j++;
		}
		Arrays.sort(arr);
		ToArray a=new ToArray();
		System.out.println("最短時間:"+a.bridge(arr, arr.length));
	}

}