Description
kotomi最近有点累,于是想玩个游戏。
kotomi九宫格玩腻了,于是想玩十六宫格。
现在kotomi要画一个'x'使得横或竖或对角线上有3个连续的'x'就获胜。
只能画在'.'上。
Input
输入第一行包含一个整数T(1 <= T <= 10)
接下来包含4*4矩阵,矩阵只包含'x','.','o'.
Output
如果能获胜则输出"yes",否则输出"no"
Sample Input
4
xx..
.oo.
x...
oox.
x.ox
ox..
x.o.
oo.x
x..x
..oo
o...
x.xo
o.x.
o...
.x..
ooxx
Sample Output
yes
no
yes
no
解析:分四种情况,每种情况所画‘ x ’又有三种落点可以满足三子,所以总共十二种判断即可。
#include <stdio.h>
char a[10][10];
int main()
{
int t,i,j,s; //s用来判断是否出现三子
scanf("%d",&t);
while(t--){
s=0;
for(i=1;i<=4;i++){
for(j=1;j<=4;j++) scanf(" %c",&a[i][j]);
}
for(i=1;i<=4;i++){
for(j=1;j<=4;j++){
if(a[i][j]=='.'){
//水平三子
if(a[i][j+1]=='x'&&a[i][j+2]=='x') s=1;
else if(a[i][j-1]=='x'&&a[i][j+1]=='x') s=1;
else if(a[i][j-1]=='x'&&a[i][j-2]=='x') s=1;
//竖直三子
else if(a[i+1][j]=='x'&&a[i+2][j]=='x') s=1;
else if(a[i-1][j]=='x'&&a[i+1][j]=='x') s=1;
else if(a[i-1][j]=='x'&&a[i-2][j]=='x') s=1;
//左上右下方向三子
else if(a[i+1][j+1]=='x'&&a[i+2][j+2]=='x') s=1;
else if(a[i-1][j-1]=='x'&&a[i+1][j+1]=='x') s=1;
else if(a[i-2][j-2]=='x'&&a[i-1][j-1]=='x') s=1;
//左下右上方向三子
else if(a[i+1][j-1]=='x'&&a[i+2][j-2]=='x') s=1;
else if(a[i-1][j+1]=='x'&&a[i+1][j-1]=='x') s=1;
else if(a[i-2][j+2]=='x'&&a[i-1][j+1]=='x') s=1;
}
if(s==1) break; //出现退出即可
}
if(s==1) break;
}
if(s==1) printf("yes\n");
else printf("no\n");
}
return 0;
}