社区讨论

40 分求调

P1838三子棋I参与者 2已保存回复 2

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
2 条
当前快照
1 份
快照标识符
@mhjrzgkj
此快照首次捕获于
2025/11/04 07:32
4 个月前
此快照最后确认于
2025/11/04 07:32
4 个月前
查看原帖

代码如下:

CPP
#include<bits/stdc++.h>
using namespace std;
string s;
long long a[5][5];
long long ans;
bool Check(int x){
	for(int i = 0; i < 3; i++){
		if(a[i][0] == a[i][1]&&a[i][1] == a[i][2]&&a[i][1] == x) return 1;
	}
	for(int i = 0; i < 3; i++){
		if(a[0][i] == a[i][0]&&a[1][i] == a[1][i]&&a[1][i] == x) return 1;
	}
	if(a[0][0] == a[1][1]&&a[1][1] == a[2][2]&&a[1][1] == x) return 1;
	if(a[0][2] == a[1][1]&&a[1][1] == a[2][0]&&a[2][0] == x) return 1;
	return 0;
}
int main(){
	cin >>s;
	for(int i = 0; i <s.size(); i++){
		long long x = s[i] - '1';
		a[x / 3][x % 3] = i % 2 + 1;
		if(Check(i % 2 + 1)) {
			ans = i % 2 + 1;
			break;
		}
	}
	if(!ans) cout << "drew.";
	else cout <<(ans == 1 ? "xiaoa wins." : "uim wins.");
	return 0;
}

回复

2 条回复,欢迎继续交流。

正在加载回复...