现在需要你判断,如果下一步轮到甲下棋,那么他能否下一步棋而获得胜利?(胜利的规则是棋盘上有自己方的三个子在一条线上,此条线可以是水平竖直或者斜45度的)。
Input
输入有4行,每行4个字符,代表当前单元的情况。
Output
如果甲可以再下一步就获得胜利输出“YES”,否则输出“NO”。
Example
样例输入①
xx..
.oo.
x...
oox.
样例输出①
YES
样例输入②
x.ox
ox..
x.o.
oo.x
样例输出②
NO
#include<stdio.h>
int row(char a[][5],int i,int j);//判断行
int colum(char a[][5],int i,int j);//判断列
int line(char a[][5],int i,int j);//判断对角线
int turn(char a[][5],int i,int j);//判断反对角线
int COUNT(char a[][5],int i,int j,int num);//计数
int main()
{
char a[5][5];
int i,j;
int flag=0;
for(i=1;i<5;i++) {
for(j=1;j<5;j++) {
scanf("%c",&a[i][j]);
}
getchar();
}
for(i=1;i<5;i++)
{
for(j=1;j<5;j++)
{
if(colum(a,i,j)&&COUNT(a,i,j,1)&&i<=2)
{
printf("YES");
flag=1;
break;
}
if(row(a,i,j)&&COUNT(a,i,j,2)&&j<3)
{
printf("YES");
flag=1;
break;
}
if(line(a,i,j)&&i<=2&&COUNT(a,i,j,3)&&j<3)
{
printf("YES");
flag=1;
break;
}
if(turn(a,i,j)&&i>=3&&j<3&&COUNT(a,i,j,4 ))
{
printf("YES");
flag=1;
break;
}
}
if(flag==1)
break;
}
if(flag==0)
printf("NO");
return 0;
}
int colum(char a[][5],int i,int j)
{
if(a[i+1][j]!='o'&&a[i+2][j]!='o'&&a[i][j]!='o')
return 1;
return 0;
}
int row(char a[][5],int i,int j)
{
if(a[i][j+1]!='o'&&a[i][j+2]!='o'&&a[i][j]!='o')
return 1;
return 0;
}
int line(char a[][5],int i,int j)
{
if(a[i+1][j+1]!='o'&&a[i+2][j+2]!='o'&&a[i][j]!='o')
return 1;
return 0;
}
int turn(char a[][5],int i,int j)
{
if(a[i-1][j+1]!='o'&&a[i-2][j+2]!='o'&&a[i][j]!='o')
return 1;
else
return 0;
}
int COUNT(char a[][5],int i,int j,int num)
{
int count=0;
if(1==num)//column
{
if(a[i+2][j] =='x')
count++;
if(a[i+1][j]=='x')
count++;
if(a[i][j]=='x')
count++;
if(count==2)
return 1;
else
return 0;
}
if(2==num)//row
{
if(a[i][j+1]=='x')
count++;
if(a[i][j+2]=='x')
count++;
if(a[i][j]=='x')
count++;
if(count==2)
return 1;
else
return 0;
}
if(3==num)//line
{
if(a[i+1][j+1]=='x')
count++;
if(a[i+2][j+2]=='x')
count++;
if(a[i][j]=='x')
count++;
if(count==2)
return 1;
else
return 0;
}
if(4==num)//turn
{
if(a[i-1][j+1]=='x')
count++;
if(a[i-2][j+2]=='x')
count++;
if(a[i][j]=='x')
count++;
if(count==2)
return 1;
else
return 0;
}
}