晚上,有n個人過河,分別需要n1、n2、n3、nn分鐘。只有一把手電筒,過河的必要條件是有手電筒。最多可以兩個人同時過河,但必須以兩人中較慢的那個人的速度過去。問:所有人都過河,至少需幾分鐘。
阿新 • • 發佈:2018-12-16
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)); } }