社区讨论
40!
P1838三子棋I参与者 1已保存回复 0
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 0 条
- 当前快照
- 1 份
- 快照标识符
- @lrd4r84n
- 此快照首次捕获于
- 2024/01/14 14:43 2 年前
- 此快照最后确认于
- 2024/01/14 17:32 2 年前
刚刚改啦一下,结果只有第一个和最后一个测试点过啦
BIG佬帮我看一下
CPP
#include<bits/stdc++.h>
using namespace std;
char s[10];
bool a1[4][4];
int a[10],ans[4][4]={{1,2,3},{4,5,6},{7,8,9}};
int funga(char s[]){
for(int i=1;i<=9;i++){
a[i]=s[i-1]-'0';
}
if(strlen(s)<9) return 2e9;
else{
for(int i=1;i<=9;i++){
for(int j=0;j<4;j++)
for(int k=0;k<=3;k++){
if(ans[j][k]==a[i]){
if(i%2!=0) a1[j][k]=false;
else a1[j][k]=true;
}
}
}
}
for(int i=0;i<4;i++){
if(a1[i][1]==a1[i][2]&&a1[i][1]==a1[i][3]&&a1[i][1]==true) return 2e9;
else if(a1[i][1]==a1[i][2]&&a1[i][1]==a1[i][3]&&a1[i][1]==false) return -2e9;//竖1
}
for(int i=0;i<4;i++){
for(int j=i+1;j<4;j++){
if(a1[i][1]==a1[j][2]&&a1[i][1]==a1[j+1][3]&&a1[i][1]==true) return 2e9;
else if(a1[i][1]==a1[j][2]&&a1[i][1]==a1[j+1][3]&&a1[i][1]==false) return -2e9;
}
}
for(int i=3;i>=0;i++){
for(int j=i-1;j>=0;j++){
if(a1[i][1]==a1[j][2]&&a1[i][1]==a1[j+1][3]&&a1[i][1]==true) return 2e9;
else if(a1[i][1]==a1[j][2]&&a1[i][1]==a1[j+1][3]&&a1[i][1]==false) return -2e9;
}
}
}
int main()
{
cin>>s;
if(funga(s) == 2e9) cout<<"xiaoa wins."<<endl;
else if(funga(s) == -2e9) cout<<"uim wins."<<endl;
else{
cout<<"drew."<<endl;
}
return 0;
}
回复
共 0 条回复,欢迎继续交流。
正在加载回复...