CCF 201903 4訊息傳遞介面(佇列)

2021-10-23 05:41:15 字數 922 閱讀 2076

我的個人部落格

原題鏈結

ccf 201903-4訊息傳遞介面 思路

主要的思路是利用佇列來儲存每乙個程序的收發指令。一旦找到匹配的指令,則將這一對出佇列。直到某一次找不到匹配的指令了,退出迴圈。再判斷是不是所有的程序對應的收發指令佇列都為空。如果全部為空,則該程式不存在死鎖,否則程序存在死鎖。

因為每乙個程序有的收發指令的個數是不同的,因此需要處理這樣不定數的輸入。這裡用到了stringstream來進行處理。即

getline

(cin,line)

;//輸入一行字串

stringstream ss

(line)

;while

(ss >> ins)

另外還要值得注意的是,程序n的最多可達10的4次方。因此n可能不止一位數,所有在做題的過程中,不能預設每乙個收發指令的長度是2。這樣就大錯特錯了!

#include

using

namespace std;

struct node};

intmain()

),比起push記憶體消耗更少

// v[i].push(node);//實測這兩個好像都可以 }}

bool flag =

true

;//表示是否有匹配的

while

(flag)}}

//找不到匹配的元素了

if(isfind ==

false)}

flag =

true

;//判斷指令全部匹配完。即判斷佇列是否為空即可

for(

int i=

0;i++i)}if

(flag)

else

}}

CCF 201903 4 訊息傳遞介面

分析 這次的出題老師貌似特別擅長作業系統,第三道才考磁碟陣列,第四道立刻又來了道死鎖。本著預設第四道是圖論或者dp的想法,看完題目覺得可能不會像表面那麼簡單,但是做完發現還真的只是道模擬題。比較坑的是開始做題一直提交二十分,提示錯誤。仔細重新讀題若干遍,又檢查 若干遍,不管如何改都是二十分。最後看了...

CCF 201903 4 試題名稱 訊息傳遞介面

參加了這場認證,及格分都沒拿到,最近準備二戰。當時感覺這道題寫得挺有把握的,結果只拿了60分,原因我就不說了,反正菜就對了。下面就來分享下做題思路 其實實現思路非常簡單,只是稍微有點繞。當你看測試樣例的時候,其實你腦袋裡就在模擬訊息傳遞的過程。其實這道題也就是模擬那個過程,沒有什麼獨特的演算法,最多...

CCF CSP題解 201903 4 訊息傳遞介面

求並行的各個程序,且程序內部順序執行的情況下,會不會出現 死鎖 首先用 n 將每個程序讀入。最後過不了居然是因為 str 開小了 悲喜交加。儲存在 中,並記錄每個程序的指令數 instnum 然後就是模擬。instcmp 記錄每個程序已完成的指令數,instblk 記錄每個程序是否阻塞,numcmp...