黑白棋子問題

問題描述

兩個人下棋,一方執(zhí)黑棋,一方執(zhí)白棋。要求雙方輪流下子。給出兩種情況的解決辦法:

1)執(zhí)黑子一方先下

2)雙方都可以先下,誰先搶到棋盤誰先下。然后開始輪流下子。



1)執(zhí)黑子一方先下信號量:b=1,w=0

黑:

while(沒結(jié)束){

wait(b);

下一黑棋;

signal(w);

}

白:

while(沒結(jié)束){

wait(w);

下一白棋;

signal(b);

}

2)先搶到棋盤者先下,然后輪流下子

問題分析:

無法用單純的信號量操作完成,因為初始值無法設置固定值。

爭搶棋盤需要一個互斥信號m;加入if控制與標志判斷。利用互斥信號量與特殊標志變量的結(jié)合使用實現(xiàn)有序控制。

Semaphore? ? m=1;turn=0;

while(沒結(jié)束){p(m);if (turn<>2)

下一黑子;

? turn=2;

v(m)

}

白:

while(沒結(jié)束){

p(m);

if (turn<>1)

下一白子;

turn=1;

v(m)

}?

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內(nèi)容

  • 1.黑白棋子問題 問題描述:兩個人下棋,一方執(zhí)黑棋,一方執(zhí)白棋。要求雙方輪流下子。給出兩種情況的解決辦法: (...
    Mr_Nuo閱讀 1,377評論 0 0
  • 黑白棋子問題 兩個人下棋,一方執(zhí)黑棋,一方執(zhí)白棋。要求雙方輪流下子。給出兩種情況的解決辦法: 1)執(zhí)黑子一方先下 ...
    w王好人w閱讀 958評論 0 0
  • 問題描述:兩人下棋,一方執(zhí)黑棋,一方執(zhí)白棋。要求雙方輪流下子。給出兩種情況的解決辦法。 1)執(zhí)黑子一方先下 2)雙...
    殺手的手剎閱讀 712評論 0 0
  • #include #include #include #include /*ProgramofGame--wuzi...
    voidjax閱讀 5,599評論 0 0
  • 西莊有個棋癡,人都稱他渾沌。他對萬事模糊,惟獨精通圍棋。他走路跌跌斜斜,據(jù)說是踩著棋格走,步步都是絕招。棋自然是精...
    V暢讀閱讀 569評論 0 1