社区讨论

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 条回复,欢迎继续交流。

正在加载回复...