2、解析思路
贪心算法,先分配任务量最大的任务,分配给当前任务量最小的人。
3、Java题解
public class Test1Service {
public static void main(String[] args) {
while(true){
Scanner sc = new Scanner(System.in);
String[] str = sc.nextLine().split(" ");
int[] nums = new int[str.length];
for (int i = 0; i < str.length; i++) {
nums[i] = Integer.parseInt(str[i]);
}
int n = sc.nextInt();
sc.nextLine();
System.out.println(cal(n, nums));
}
}
public static int cal(int n, int[] project) {
Arrays.sort(project);
int[] taskForP = new int[n];
int i = project.length - 1;
while(i >= 0){
int index = findMinTaskP(taskForP);
taskForP[index] += project[i];
i--;
}
int maxTask = 0;
for (int j = 0; j < taskForP.length; j++) {
if(taskForP[j] > maxTask){
maxTask = taskForP[j];
}
}
return maxTask;
}
public static int findMinTaskP(int[] task){
int ret = 0;
int minTask = task[0];
for (int i = 1; i < task.length; i++) {
if(task[i] < minTask){
ret = i;
}
}
return ret;
}
}