CCF 訊息傳遞介面 60分

2021-10-03 22:27:34 字數 1018 閱讀 6544

大家不要看,我就是寫個部落格讓別人給我找找錯誤。

#include#include#includeusing namespace std;

const int maxn = 10005;

/*** 指令

*/struct command

};queuesource[maxn]; //程序的待處理指令集(包括r指令和s指令)。

/*** 處理r指令

** 引數:

** num: 哪個程序的r指令

** recindex : r指令對應的程序編號

** 例如:3號程序執行r2指令,其中num=3,recindex=2。

*/bool dealr(int num,int recindex)

command command = source[recindex].front();

if(command.type == 's' && command.pid == num)else

} /*

** 處理s指令

** 引數:

** sendnum: s指令的傳送方

** recnum: s指令的接收方

** 例如:1號程序傳送s3指令,其中sendnum=1,recnum=3。

*/bool deals(int sendnum,int recnum)

command command = source[recnum].front();

if(command.type == 'r' && command.pid == sendnum)else}/*

** 判斷各個程序的待處理指令集是不是空了

*/bool judgeempty(int n)

bool ans = dealnowcommand(n);

if(ans)else

destroydata(n); //重置變數

} return 0;

}

CCF 201903 4 訊息傳遞介面

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

CCF認證 201903 4訊息傳遞介面

void move str char old 將字串向前移動,每次判斷的是佇列的最前面的那乙個 while old i old i 0 memcpy temp,old i 1,70 memcpy old,temp,70 return int change num char start 將字串中的那一...

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

我的個人部落格 原題鏈結 ccf 201903 4訊息傳遞介面 思路 主要的思路是利用佇列來儲存每乙個程序的收發指令。一旦找到匹配的指令,則將這一對出佇列。直到某一次找不到匹配的指令了,退出迴圈。再判斷是不是所有的程序對應的收發指令佇列都為空。如果全部為空,則該程式不存在死鎖,否則程序存在死鎖。因為...