话不多说,直接开始分析。
题目
查看题目
题意分析
给定 个服务器,每个服务器有最大处理能力。给定 个任务,每个任务需要占用一定的服务器处理能力。要求找到一个分配方案,使得每个任务都能分配到一个服务器,并且分配方案的服务器编号字典序最小。如果找不到分配方案,输出 -1。这个题意我认为大家是可以秒掉的。
题目解法
思路
输入
读取服务器数量 、任务数量 ,以及每个服务器的处理能力 a[i] 和每个任务的需求 b[i]。
DFS(深搜):
- 从第一个任务开始,依次为每个任务分配服务器。
- 优先尝试编号较小的服务器,保证字典序最小。
- 使用
vis[i]数组标记服务器i是否已被分配。 - 如果找到一个可行的分配方案,设置
f为true并输出结果。 - 如果回溯后找到可行方案,则直接返回,否则继续尝试。
输出
如果 f 为 false,说明没有找到可行的分配方案,输出 -1 (结尾代码 if(!f),也可以用 f == 0 代替)。