TopCoder

Thumb hsnu2016
Adrien Wu
$ \begin{align} AC \times 2^9 \\ \text{New TIOJ ?} \end{align} $

User's AC Ratio

92.7% (38/41)

Submission's AC Ratio

57.7% (79/137)

Description

井字遊戲是三、四歲小孩就會玩的棋賽。在一個3 列(row) x 3 行(column)的空格中,參與遊戲的兩人一個只能填入O,另一個只能填入X,兩人從頭到尾輪流填入自己的符號,誰先將自己的符號在垂直、水平或斜角方向連成3 個,誰就勝利。在此假設遊戲一開始都是填入O 的人先填。

請寫一個程式,來判斷給定任一棋局,其最後結束時(O 贏、X 贏或平手)共有幾種不同的棋盤面,而其中O 贏的棋盤面、X 贏的棋盤面、和局的棋盤面各有幾種。

例如,下圖中,最左邊的棋局,其結束時的棋盤面會有右邊四種可能。第一種O 贏,第二種平手,第三、四種都是X 贏,因此輸出(4, 1, 2, 1)。

Input Format

測試檔案中共有一行,以九個連續符號表示一個棋局(完成或未完成),前三個符號代表該棋局第一列的三個格子的狀態,第四到第六個符號代表該棋局第二列的三個格子的狀態,第七到第九個符號代表該棋局第三列的三個格子的狀態。這些符號除了「O」與「X」外,以「-」來代表尚未被填入的格子。輸入檔中不會有不合理的棋局出現。

Output Format

依序輸出該棋局最後可能出現的不同棋盤面數、O 贏的棋盤面數,X 贏的棋盤面數,以及平手的棋盤面數,此四個數字以空白隔開。

Sample Input

## Sample Input #1
OX--X-XOO

## Sample Input #2
O-OXO-X--

## Sample Input #3
O-OXO-X-X

Sample Output

## Sample Output #1
4 1 2 1

## Sample Output #2
11 9 1 1

## Sample Output #3
4 2 1 1

Hints

這題本來是檔案輸入輸出,不過在這裡請用螢幕輸入輸出。

※你應該要學會從檔案輸入輸出資料!

Problem Source

原TIOJ1061 / 95北市賽(prob 3)

Subtasks

No. Testdata Range Score
1 0 12
2 1 12
3 2 12
4 3 12
5 4 12
6 5 12
7 6 12
8 7 16

Testdata and Limits

No. Time Limit (ms) Memory Limit (KiB) Output Limit (KiB) Subtasks
0 2000 65536 262144 1
1 2000 65536 262144 2
2 2000 65536 262144 3
3 2000 65536 262144 4
4 2000 65536 262144 5
5 2000 65536 262144 6
6 2000 65536 262144 7
7 2000 65536 262144 8