ICode9

精准搜索请尝试: 精确搜索
首页 > 系统相关> 文章详细

【机试备考】Day33-内存分配 | 数组

2021-03-16 16:03:12  阅读:229  来源: 互联网

标签:tmp int cin Day33 备考 内存 进程 机试 分配


题目

BUPT 2014 计算机 ProblemB(oj 310)
在操作系统中,内存分配是非常重要的工作。
已知内存空间由N个内存块组成,这些内存块从1到N编号,进行内存分配时,操作系统将选择一块大小足够的内存全部分配给请求内存的进程。例如,当进程请求10MB的内存时,操作系统必须向该进程分配一个不小于10MB的内存块。内存块不能被重复分配。
操作系统有三种基本的分配方式,分别为:
首次适应:从1号到N号内存块依次查找,直到找到第一块足够大的且未分配出去的内存块,将其分配给进程。
最佳适应:找到当前未分配出去且大小足够的内存块中最小的内存块分配给进程。
最差适应:找到当前未分配出去且大小足够的内存块中最大的内存块分配给进程。
其中,最佳适应是应用最为广泛的分配方式。现在,操作系统要依次处理M个进程的内存请求,请按照最佳适应方式分配内存,并输出相应分配到的内存块的大小。如果没有大小足够的内存块可以满足当前请求,则输出“NULL”(不包含引号),并跳出该请求。

输入描述

输入数据的第一行是测试数据组数T(T<=50)
每组数据由4行构成:
第一行为一个整数N(1<=N<=100),表示有N个内存块。
第二行有N个整数,第i个整数表示第i块内存块的大小。
第三行为一个整数M(1<=M<=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

题解

#include <bits/stdc++.h>
using namespace std;
#define Max 5000000
int main()
{
    int t;
    cin>>t;
    while(t--)
    {
        int a,n,m;
        cin>>n;
        int tmp=n;
        vector<int>mem;
        while(tmp--)
        {
            cin>>a;
            mem.push_back(a);
        }
        sort(mem.begin(),mem.end());
        cin>>m;
        tmp=m;
        while(tmp--)
        {
            cin>>a;
            int flag=0;
            if(tmp!=m-1)
                cout<<" ";
            for(int i=0; i<mem.size(); i++)
            {
                //找到了
                if(mem[i]>=a)
                {
                    flag=1;
                    cout<<mem[i];
                    mem.erase(mem.begin()+i);
                    sort(mem.begin(),mem.end());
                    break;
                }
            }
            //没找到
            if(!flag)
                cout<<"NULL";
        }
        cout<<endl;
    }
}

标签:tmp,int,cin,Day33,备考,内存,进程,机试,分配
来源: https://blog.csdn.net/qq_43417265/article/details/114884235

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有