11010: Tic-Tac-Tough ★★★★☆ 題組: Problem Set Archive with Online Judge 解題者:陳勇達 解題日期:2007年4月9日 題意:有偶數n(2≦n≦100)個井字遊戲的fields,每一個field都畫上同等數量的O或X,但不會同時有三個一樣的符號在同一線上,Johnny跟Mary輪流各拿一半的fields,由Johnny開始從他所選的fields畫上X,如果還沒有連成線就換Marry在該field畫上O。誰連成一線就得一分,到該field已填滿了但是未連成一線,則無人得分。接下來輪到Mary在她所選的fields畫上O,以此類推。最後得較多分者勝。
題意範例: Output: Input: Case 1: Draw. 2 Case 2: Johnny wins. ......... ......... ......... 4 XO.X..O.. ....X...O XXO.O.X.O X.O...O.X .x..O..XO 0 0表示結束 .表示空白 Output: Case 1: Draw. Case 2: Johnny wins. Case 3: Mary wins.
Step 1) 選擇Fields。判斷誰會得勝,關鍵在於選擇fields的方法 解法: Step 1) 選擇Fields。判斷誰會得勝,關鍵在於選擇fields的方法 Johnny first Mary Rank 1 2 3 4 5 6 7 8 9 Win Tie Lose Rank Function for Johnny Johnny first Mary Rank 1 2 3 4 5 6 7 8 9 Win Tie Lose Rank Function for Mary Step 2)算Johnny和Mary所選的fields rank,判斷每一個fields 輸贏的方法如下
解法:將Input的{ o, x, . }依照每一行分別存入二維陣列中,而每一步的選擇則是利用tree的方法判斷下一步的最佳解(方法如圖)直到某方獲勝或填滿為止 我方成一直線機會(個數) – 對方成一直線機會(個數) 井字遊戲前兩步所有盤局形成一樹狀結構
同理
Step 3:選完以後,再算Johnny和Mary得幾分,得較多分者獲勝 解法範例:無 討論: