求调
查看原帖
求调
376679
初星逝者楼主2024/4/20 08:27
#include <bits/stdc++.h>
using namespace std;

int t[3][3];
int a[3][3];

bool dfs(bool now){
	int sum0=0,sum1=0;
	for(int i=0;i<=2;i++){
		sum0=sum1=0;
		for(int j=0;j<=2;j++){
			if(a[i][j]==0)sum0++;
			if(a[i][j]==1)sum1++;
		}
		if(sum0==3)return 0;
		if(sum1==3)return 1;
	}
	for(int j=0;j<=2;j++){
		sum0=sum1=0;
		for(int i=0;i<=2;i++){
			if(a[i][j]==0)sum0++;
			if(a[i][j]==1)sum1++;
		}
		if(sum0==3)return 0;
		if(sum1==3)return 1;
	}
	sum0=sum1=0;
	for(int i=0;i<=2;i++){
		if(a[i][i]==0)sum0++;
		if(a[i][i]==1)sum1++;
	}
	if(sum0==3)return 0;
	if(sum1==3)return 1;
	sum0=sum1=0;
	for(int i=0;i<=2;i++){
		if(a[i][2-i]==0)sum0++;
		if(a[i][2-i]==1)sum1++;
	}
	if(sum0==3)return 0;
	if(sum1==3)return 1;
	sum0=sum1=0;
	int s0=0,s1=0;
	for(int i=0;i<=2;i++){
		for(int j=0;j<=2;j++){
			if(a[i][j]==0)sum0++,s0+=t[i][j];
			if(a[i][j]==1)sum1++,s1+=t[i][j];
		}
	}
	if(sum0+sum1==9)return s0<s1;
	for(int i=0;i<=2;i++){
		for(int j=0;j<=2;j++){
			if(a[i][j]==-1){
				a[i][j]=now;
				if(dfs(now^1)==now){
					a[i][j]=-1;
					return now;
				}
				a[i][j]=-1;
			}
		}
	}
	return now^1;
}

int main(){
	memset(a,-1,sizeof(a));
	for(int i=0;i<=2;i++){
		for(int j=0;j<=2;j++){
			cin >> t[i][j];
		}
	}
	if(!dfs(0))puts("Takahashi");
	else puts("Aoki");
	return 0;
}

不知道哪里写错了,看题解的python看不懂

2024/4/20 08:27
加载中...