記憶體分配 北郵OJ277

2021-09-11 09:28:13 字數 2389 閱讀 2798

在作業系統中,記憶體分配是非常重要的工作。

已知記憶體空間由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

47 5 10 3

24 6

43 5 9 10

35 12 6

5 7

5 null 9

/*

problem b. 記憶體分配

題目描述

在作業系統中,記憶體分配是非常重要的工作。

已知記憶體空間由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"(不包含引號)

請不要輸出多餘的行尾空格,否則會被判為格式錯誤。

輸入樣例24

7 5 10 3

24 6

43 5 9 10

35 12 6

輸出樣例

5 75 null 9

project: memallocation

date: 2019/02/26

author: frank yu

*/#include#include#include#include#include#include#include#include#include#include#include#include#includeusing namespace std;

#define f(i,m,n) for(int i=m;i>t;

int mem[101];//記憶體空閒塊

bool flag; //可分配標誌

while(t--)

sort(mem+0,mem+n);

cin>>m;

f(j,0,m)

{ flag=false;

cin>>temp;

f(k,0,n) //從小到大遍歷空閒塊

{if(temp<=mem[k]){ //找到可分配空閒快

cout《更多資料結構與演算法實現:資料結構(嚴蔚敏版)與演算法的實現(含全部**)

北郵OJ打牌

牌只有1到9,手裡拿著已經排好序的牌a,對方出牌b,用程式判斷手中牌是否能夠壓過對方出牌。規則 出牌牌型有5種 1 一張 如4 則5.9可壓過 2 兩張 如44 則55,66,77,99可壓過 3 三張 如444 規則如 2 4 四張 如4444 規則如 2 5 五張 牌型只有12345 23456...

北郵OJ虛數

乙個複數 x iy 集合,兩種操作作用在該集合上 1 pop 表示讀出集合中複數模值最大的那個複數,如集合為空 輸出 empty 不為空就輸出最大的那個複數並且從集合中刪除那個複數,再輸出集合的大小size 2 insert a ib 指令 a,b表示實部和虛部 將a ib加入到集合中 輸出集合的大...

北郵OJ樹查詢

有一棵樹,輸出某一深度的所有節點,有則輸出這些節點,無則輸出empty。該樹是完全二叉樹。輸入描述 輸入有多組資料。每組輸入乙個n 1 n 1000 然後將樹中的這n個節點依次輸入,再輸入乙個d代表深度。輸出描述 輸出該樹中第d層得所有節點,節點間用空格隔開,最後乙個節點後沒有空格。示例1輸入 41...