你已经两个月没有出门了,无聊到自己和自己玩“一键三连”的游戏。这个游戏很简单,你制作了规格为4×4的棋盘,一开始棋盘中所有格子都是空的,全为‘.’,紧接着你一人分饰两角,一个画‘x’填到一个为空的格子里,另一个画‘o’填到另一个为空的格子,这个过程交替进行。如果一方先使横的、竖的或斜的有连续的三个格子都是属于自己的标记,那么就赢了。
你刚刚看完一个视频,现在准备开始玩“一键三连”,于是你拿出了很久之前的棋盘,它可能下过,也可能没有(即全部填‘.’),但保证此时没有达到画‘o’的胜局。你选择在一个为空的格子里画‘x’后马上停止,看看是否能构成画‘x’的胜局。
输入格式:
输入共四行四列,表示由“.”(表示空的),“x”(小写字母x)或“o”(小写字母o)组成棋盘。
输出格式:
如果你一键三连了,输出“YES”,否则输出“NO”。
输入样例1:
xx..
.oo.
x...
oox.
输出样例1:
YES
输入样例2:
x.ox
ox..
x.o.
oo.x
输出样例2:
NO
我理解是X玩家再走一步胜利就是YES否则就是NO
#include <bits/stdc++.h>
using namespace std;
char mp[10][10];
bool check(){
for (int i = 0; i < 2; ++i){
for (int j = 0; j < 2; ++j){
if (mp[i][j] == mp[i + 1][j] == mp[i + 2][j] == 'x')//行{
return true;
}
if (mp[i][j] == mp[i + 1][j + 1] == mp[i + 2][j + 2] == 'x')//斜{
return true;
}
if (mp[i][j] == mp[i][j + 1] == mp[i][j + 2] == 'x')//竖{
return true;
}
}
}
return false;
}
int main(){
for (int i = 0; i < 4; ++i){
for (int j = 0; j < 4; ++j) cin >> mp[i][j];
}
for (int i = 0; i < 4; ++i){
for (int j = 0; j < 4; ++j){
if (mp[i][j] == '.'){
mp[i][j] = 'x';
if (check()) {
cout << "YES";
return 0;
}
else{
mp[i][j] = '.';
}
}
}
}
cout << "NO";
return 0;
}