中興程式設計題 獲取未命中個數

2021-07-22 06:58:13 字數 1427 閱讀 1081

題目描述:

輸入最大快取個數max_cache_size和頁面申請陣列page_requests,請求進入時的快取狀態,按留在快取中最長時間到留在快取中最短時間排序。輸出未命中頁面個數。

例如:

輸入:

max_cache_size: 2

page_requests:[1, 2, 1, 3, 1, 2]

輸出:

5。 作者解釋:這其實是先進先出頁面置換演算法,來求未命中個數。

作者設計:用乙個vector容器來模擬佇列,外層是乙個大迴圈,指標指向陣列第乙個元素,知道指向最後乙個元素為止,迴圈結束。迴圈內部有兩個if判斷。先判斷佇列是否為空,若為空,則壓入元素,未命中加1;若不為空,則用find()函式查詢該元素是否在佇列中,若不在,未命中加1,這時候再做一次判斷,佇列是否已滿,若滿,先彈出隊頭元素,再在隊尾壓入元素;否則直接壓入。若在,則繼續迴圈。

**如下所示:

# include 

# include

# include

using

namespace

std;

int getmissnum(const

vector

&nums, const

unsigned

int &n)

else

else}}

}return cnt;

}int main(void)

; int nums_temp2 = ;

int nums_te*** = ;

vector

nums1(nums_temp1, nums_temp1 + 6);

vector

nums2(nums_temp2, nums_temp2 + 16);

vector

nums3(nums_te***, nums_te*** + 9);

cout

<< "case1, missnum is "

<< getmissnum(nums1, 2) << endl;

cout

<< "case2, missnum is "

<< getmissnum(nums2, 3) << endl;

cout

<< "case3, missnum is "

<< getmissnum(nums3, 2) << endl;

return

0;}

**中用到了find()函式,所以需要加上標頭檔案# include 。

vector模擬佇列是用insert()和pop_back()兩個函式實現的,即壓入元素insert(q.begin(), nums[i]),彈出元素pop_back()。

程式中的測試用例均來自中興官方測試平台。

若有不對之處,敬請指正。

資料獲取程式設計題

import urllib.request for i in range 10 r urllib.request.urlopen i 獲取網路資料,返回乙個類檔案物件 html r.read 讀取檔案內容 f open d python 100000000 d.html i,wb f.write h...

Windows程式設計 獲取系統CPU 個數

隨著多核cpu的普及,程式中有必要考慮利用多核的優勢來提高效能。比如當建立執行緒池或者程序池的時候,可以根據系統cpu的個數來設定執行緒池 程序池的大小。以下 示例如何獲取cpu的個數。view plaincopy to clipboardprint?typedef void winapi pgns...

程式設計題 n個數里最小的k個

輸入描述 每個測試輸入包含空格分割的n 1個整數,最後乙個整數為k值,n 不超過100。輸出描述 輸出n個整數裡最小的k個數。公升序輸出示例1 3 9 6 8 10 7 11 19 30 12 23 5 11 10 3 6 7第一種方法,用容器 include include includeusin...