题解 | #井字棋#
井字棋
https://www.nowcoder.com/practice/0375c1d206ef48a3894f72aa07b2fdde
#include <stdio.h>
int main() {
/*
4 9 2
3 5 7
8 1 6
九宫格对应的位置
0 1 2
3 4 5
6 7 8
*/
// 只有八种赢的情况
int win[8][3] = {
{0, 1, 2}, {0, 3, 6}, {0, 4, 8},
{1, 4, 7}, {2, 4, 6}, {3, 4, 5},
{6, 7, 8}, {0, 5, 8}
};
int K[9] = {0};
int O[9] = {0};
int B[9] = {0};
char get;
int index = 0;
for (int i = 0; i < 3; i++) {
for (int j = 0; j < 3; j++) {
scanf("%s", &get);
if (get == 'K') {
K[index] = 1;
} else if (get == 'O') {
O[index] = 1;
} else {
B[index] = 1;
}
index++;
}
}
for (int i = 0; i < 8; i++) {
int K_n = 0;
int O_n = 0;
int B_n = 0;
for (int j = 0; j < 3; j++) {
if (K[win[i][j]] != 0) {
K_n++;
} else if (O[win[i][j]] != 0) {
O_n++;
} else {
B_n++;
}
}
if (K_n == 3) {
printf("KiKi wins!");
break;
}
if (O_n == 3) {
printf("No winner!");
break;
}
if (B_n == 3) {
printf("BoBo wins!");
break;
}
}
return 0;
}

