递归处理电梯带人上楼"/>
递归处理电梯带人上楼
先输入两个整数N,K.表示有N个人要坐电梯上楼,电梯的容量为K,再输入N个整数(f1, f2, … , fn)表示每个人要到达的地方楼层,(1 <= N, K <= 2000, 1 <= fi <= 2000),电梯从A层到B层的时间为|A-B|,求输出最小的花费时间.
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.List;public class Main {public static void main(String[] args) throws Exception {BufferedReader br = new BufferedReader(new InputStreamReader(System.in));String line = null;while ((line = br.readLine()) != null) {String[] strArr = line.split(",");int n = Integer.valueOf(strArr[0]);int k = Integer.valueOf(strArr[1]);String[] floors = br.readLine().split(",");List<Integer> list = new ArrayList<>();for (String floor : floors) {list.add(Integer.valueOf(floor));}list.sort((o1,o2) -> o2pareTo(o1));System.out.println(getCount(n, k, 0, list));}}private static int getCount(int n, int k, int index, List<Integer> list) {if (n <= k) {return (list.get(index) - 1) * 2;} else {return getCount(k, k, index, list) + getCount(n - k, k, index + k, list);}}
}
更多推荐
递归处理电梯带人上楼
发布评论