题解 | #井字棋#
井字棋
https://www.nowcoder.com/practice/0375c1d206ef48a3894f72aa07b2fdde
#include <iostream>
#include <iomanip>
using namespace std;
int main() {
int numK = 0;
int numB = 0;
char a[3][3];
for (int i = 0; i < 3; i++) {
for (int j = 0; j < 3; j++) {
cin >> a[i][j];
}
}
// 遍历行是否存在3个相同符号
for (int i = 0; i < 3; i++) {
for (int j = 0; j < 3; j++) {
if (a[i][j] == 'K') {
numK++;
}
if (a[i][j] == 'B') {
numB++;
}
}
if (numK == 3) {
cout << "KiKi wins!";
return 0;
} else if (numB == 3) {
cout << "BoBo wins!";
return 0;
} else {
numK = 0;
numB = 0;
}
}
// 遍历列是否存在3个相同符号
for (int i = 0; i < 3; i++) {
for (int j = 0; j < 3; j++) {
if (a[j][i] == 'K') {
numK++;
}
if (a[j][i] == 'B') {
numB++;
}
}
if (numK == 3) {
cout << "KiKi wins!";
return 0;
} else if (numB == 3) {
cout << "BoBo wins!";
return 0;
} else {
numK = 0;
numB = 0;
}
}
// 遍历两条对角线是否存在3个相同符号
for (int t = 0; t < 2; t++) {
if (t == 0) {
for (int i = 0; i < 3; i++) {
if (a[i][i] == 'K') {
numK++;
}
if (a[i][i] == 'B') {
numB++;
}
}
}
if (t == 1) {
for (int i = 0; i < 3; i++) {
if (a[i][2 - i] == 'K') {
numK++;
}
if (a[i][2 - i] == 'B') {
numB++;
}
}
}
if (numK == 3) {
cout << "KiKi wins!";
return 0;
} else if (numB == 3) {
cout << "BoBo wins!";
return 0;
} else {
numK = 0;
numB = 0;
}
}
cout << "No winner!";
return 0;
}
查看8道真题和解析