zoukankan      html  css  js  c++  java
  • BUPT复试专题—内存分配(2014-2)

    题目描述

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

    输入

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

    来源

    2014机考B题 

    #include<iostream>
    #include<cstdio>
    #include<algorithm>
    #include<string>
    using namespace std;
    int sort(const void *a,const void *b)
    {
        return *(int *)a-*(int *)b;
    }
    int main() 
    {
        int T;
        cin>>T;
        while(T--)
        {
            int number,i=0,donser[101],ask,what;
            cin>>number;
            while(i<number)
            {
                cin>>donser[i];
                i++;
            }
            qsort(donser,number,sizeof(int),sort);
            cin>>ask;i=0;
            while(i<ask)
            {
                cin>>what;
                int lable=0;
                for(int j=0;j<number;j++)
                {
                    if(donser[j]>=what)
                    {
                        if(i!=ask-1)
                            cout<<donser[j]<<" ";
                        if(i==ask-1)
                            cout<<donser[j]<<endl;
                        donser[j]=0;
                        qsort(donser,number,sizeof(int),sort);
                        lable=1;
                        break;
                    }
                }
                if(lable==0)
                {
                    if(i!=ask-1)
                        cout<<"NULL"<<" ";
                    if(i==ask-1)
                        cout<<"NULL"<<endl;
                }
                i++;
            }
        }
        return 0;
    }
  • 相关阅读:
    triplet loss 在深度学习中主要应用在什么地方?有什么明显的优势?
    一个评测指标就是MAP(Mean Average Precision)平均精度均值。
    机器学习术语中英对照表
    logistic softmax
    mysql导出导入sql文件方法(linux)
    mysql分区表
    matplotlib安装错误依赖问题解决
    linux命令集合
    linux下安装或升级GCC4.8.2,以支持C++11标准[转]
    linux 如何显示一个文件的某几行(中间几行)
  • 原文地址:https://www.cnblogs.com/dzzy/p/8535393.html
Copyright © 2011-2022 走看看