题解:P15068 [UOI 2024 II Stage] Tic-Tac-Toe
这题是要求再下一步棋可不可以到另一个状态,那么我们可以知道,原来的一个空位如果变了棋子,那么为可以,如果改变了更多即不行。
而且 0 的数量不可能大于 X 的数量,因为 X 为先手,那么我们就可以手搓代码。
AC Code:
#include<bits/stdc++.h>
using namespace std;
int a[5][5],b[5][5];
int sumX,sumO,sumX1,sumO1;
int main(){
for(int i=1;i<=3;i++){
for(int j=1;j<=3;j++){
char c;
cin>>c;
if(c=='0'){
a[i][j]=2;
sumO1++;
}else if(c=='X'){
a[i][j]=1;
sumX1++;
}
}
}
for(int i=1;i<=3;i++){
for(int j=1;j<=3;j++){
char c;
cin>>c;
if(c=='0'){
b[i][j]=2;
sumO++;
}else if(c=='X'){
b[i][j]=1;
sumX++;
}
}
}
if(sumX<sumO||sumX-sumO>1){
cout<<"NO";
return 0;
}
int kX=0,kO=0;
for(int i=1;i<=3;i++){
for(int j=1;j<=3;j++){
if(a[i][j]!=0&&a[i][j]!=b[i][j]){
cout<<"NO";
return 0;
}
if(a[i][j]==0&&a[i][j]!=b[i][j]){
if(b[i][j]==2){
kO++;
}else if(b[i][j]==1){
kX++;
}
}
}
}
if(kO+kX<=1){
cout<<"YES";
}else{
cout<<"NO";
}
return 0;
}
完结撒花~~