题解 | #井字棋#
井字棋
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; }