算法每一题,成长每一天~
C0E46 内存资源分配
真题链接:【持续更新】2024华为 OD 机试E卷 机考真题库清单(全真题库)
思路
1、排序,优先匹配
Java
package com.ccr.paper_f;
import java.util.Arrays;
import java.util.Comparator;
import java.util.Scanner;
public class C0E46 {
static class Volume {
public int space;
public int number;
public Volume(int space, int number) {
this.space = space;
this.number = number;
}
}
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
String[] split = in.nextLine().split(",");
Volume[] volumes = new Volume[split.length];
for (int i = 0; i < split.length; i++) {
String[] item = split[i].split(":");
volumes[i] = new Volume(Integer.parseInt(item[0]),
Integer.parseInt(item[1]));
}
// 按空间从小到大排序
Arrays.sort(volumes, Comparator.comparingInt(o -> o.space));
String[] split1 = in.nextLine().split(",");
int[] quests = new int[split1.length];
for (int i = 0; i < split1.length; i++) {
quests[i] = Integer.parseInt(split1[i]);
}
boolean[] result = new boolean[quests.length];
Arrays.fill(result, false);
for (int i = 0; i < quests.length; i++) {
int questSpace = quests[i];
for (Volume volume : volumes) {
if (volume.space > questSpace
&& volume.number > 0) {
volume.number--;
result[i] = true;
break;
}
}
}
System.out.println(Arrays.toString(result));
}
}
总结
~
算法要多练多练多练!!