題目描述:
輸入最大快取個數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...