社区讨论
80,哪错了求调
P1838三子棋I参与者 2已保存回复 3
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 3 条
- 当前快照
- 1 份
- 快照标识符
- @mlw1cp57
- 此快照首次捕获于
- 2026/02/21 16:07 3 周前
- 此快照最后确认于
- 2026/02/23 21:20 3 周前
80,哪错了求调
脑抽看不出哪错了
CPP#include <iostream>
#include <string>
using namespace std;
int hang[10] = {0, 1, 1, 1, 2, 2, 2, 3, 3, 3};
int lie[10] = {0, 1, 2, 3, 1, 2, 3, 1, 2, 3};
int diag[10] = {0, 1, 0, 2, 0, 1, 0, 2, 0, 1};
int cnt[2][9] = {0};
bool check_win(int player) {
for (int i = 1; i <= 3; i++) {
if (cnt[player][i] == 3 || cnt[player][i+3] == 3) {
return true;
}
}
if (cnt[player][7] == 3 || cnt[player][8] == 3) {
return true;
}
return false;
}
int main() {
string s;
cin >> s;
int len = s.size();
bool has_winner = false;
for (int i = 0; i < len; i++) {
if (has_winner) break;
int pos = s[i] - '0';
int player = i % 2;
cnt[player][hang[pos]]++;
cnt[player][lie[pos] + 3]++;
if (diag[pos] == 1) {
cnt[player][7]++;
} else if (diag[pos] == 2) {
cnt[player][8]++;
}
if (check_win(player)) {
has_winner = true;
if (player == 0) {
cout << "xiaoa wins." << endl;
} else {
cout << "uim wins." << endl;
}
}
}
if (!has_winner) {
cout << "drew." << endl;
}
return 0;
}
所以哪错了???
##错误样例:
输入:123456897
输出:xiaoa wins.
回复
共 3 条回复,欢迎继续交流。
正在加载回复...