题目大意:
给你一个五子棋棋局,让你找一下是不是可以接下来下一个子就赢。
代码:
#include<bits/stdc++.h>
using namespace std;
#define maxn 10
char a[maxn][maxn]={0};
int mv[4][2]={{1,1},{1,0},{0,1},{-1,1}};
bool try_find(int x,int y)
{
a[x][y]='X';
for(int i=0;i<4;i++)
{
int num=0;int k=0;
while(a[x+k*mv[i][0]][y+k*mv[i][1]]=='X')
{
k++;num++;
if(x+k*mv[i][0]<0||x+k*mv[i][0]>=10||y+k*mv[i][1]<0||y+k*mv[i][1]>=10)break;
}
k=0;
while(a[x+k*mv[i][0]][y+k*mv[i][1]]=='X')
{
k--;num++;
if(x+k*mv[i][0]<0||x+k*mv[i][0]>=10||y+k*mv[i][1]<0||y+k*mv[i][1]>=10)break;
}
num--;
if(num>=5)return 1;
}
a[x][y]='.';
return 0;
}
int main()
{
for(int i=0;i<maxn;i++)
{
scanf("%s",a[i]);
}
bool flag=0;
for(int i=0;i<maxn;i++)
{
for(int j=0;j<maxn;j++)
{
if(a[i][j]=='.'&&try_find(i,j)==1)
{
flag=1;
break;
}
}
if(flag==1)break;
}
if(flag==1)printf("YES");
else printf("NO");
}