1408.内存分配

通过数:115提交数:307学校:北京邮电大学考研机试真题 题目列表 标签
在操作系统中,内存分配是非常重要的工作。 已知内存空间由 $N$ 个内存块组成,这些内存块从 $1$ 到 $N$ 编号。 进行内存分配时,操作系统将选择一块大小足够的内存全部分配给请求内存的进程。 例如,当进程请求 $10MB$ 的内存时,操作系统必须向该进程分配一个不小于 $10MB$ 的内存块。 内存块不能重复分配。 操作系统有三种基本的分配方式,分别为: 首次适应:从 $1$ 号到 $N$ 号内存块依次查找,直到找到第一块足够大的且未分配出去的内存块,将其分配给进程。 最佳适应:找到当前未分配出去且大小足够的内存块中最小的内存块分配给进程。 最差适应:找到当前未分配出去且大小足够的内存块中最大的内存块分配给进程。 其中,最佳适应方式是应用最为广泛。 现在,操作系统要依次处理 $M$ 个进程的内存请求,请按照最佳适应方式分配内存,并输出相应的内存块的大小。 如果,没有大小足够的内存块可以满足当前请求,则输出 $NULL$ (不包含引号),并跳过该请求。 输入格式 输入数据的第一行是测试数据组数 $T$ ($T \leq 20$)。 每组数据由 $4$ 行构成: 第一行为一个整数 $N$ ($1 \leq N \leq 100$):表示有 $N$ 个内存块。 第二行有 $N$ 个整数,第 $i$ 个整数表示第 $i$ 块内存块的大小 。 第三行为一个整数 $M$ ($1 \leq M \leq 100$):表示有 $M$ 个请求 。 第四行有 $M$ 个整数,表示进程所请求的内存空间。 输出格式 每组数据输出一行,每行有 $M$ 个数,表示操作系统采用最佳适应方式,依次分配给进程的内存块大小。 如果没有可用内存块,输出 $NULL$ (不包含引号) 不要输出多余的行尾空格。 输入样例 2 4 7 5 10 3 2 4 6 4 3 5 9 10 3 5 12 6 输出样例 5 7 5 NULL 9
C
补全
点击调试按钮即可调试代码。

点击提交按钮即可提交代码。