# 132. 夹吃棋

题目链接 (opens new window)

这道题是模拟题,但很多录友可能想复杂了。

行方向,白棋吃,只有这样的布局 o*o,黑棋吃,只有这样的布局 *o*

列方向也是同理的。

想到这一点,本题的代码就容易写了, C++代码如下:

#include <iostream>
#include <vector>
using namespace std;
int main() {
    int n;
    cin >> n;
    while (n--) {
        int black = 0, white = 0;
        vector<string> grid(3, "");
        // 判断行
        for (int i = 0; i < 3; i++) {
            cin >> grid[i];
            if (grid[i] == "o*o") white++;
            if (grid[i] == "*o*") black++;
        }
        // 判断列
        for (int i = 0; i < 3; i++) {
            string s;
            s += grid[0][i];
            s += grid[1][i];
            s += grid[2][i];
            if (s == "o*o") white++;
            if (s == "*o*") black++;
        }
        // 如果一个棋盘的局面没有一方被夹吃或者黑白双方都被对面夹吃,则认为是平局
        if ((!white && !black) || (white && black)) cout << "draw" << endl; 
        // 白棋赢
        else if (white && !black) cout << "yukan" << endl;
        // 黑棋赢
        else cout << "kou" << endl;
    }
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
上次更新:: 3/4/2025, 5:49:45 PM
@2021-2025 代码随想录 版权所有 粤ICP备19156078号