ZCMU—1891是什么组织或事件?
- 内容介绍
- 文章标签
- 相关推荐
本文共计792个文字,预计阅读时间需要4分钟。
1891: kotomi & 游戏时间限制:1秒内存限制:128MB[提交][状态][Web Board]描述:kotomi最近有点累,想玩个游戏。她九宫格玩腻了,于是想玩十六宫格。
1891: kotomi and game
Time Limit:1 Sec
Memory Limit:128 MB
[Submit][Status][Web Board]
Description
kotomi最近有点累,于是想玩个游戏。
kotomi九宫格玩腻了,于是想玩十六宫格。
只要满足横或竖或对角线上有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
暴力模拟一下就好了...对每个'.'寻找它的周围能不能组成3个'x',情况考虑完全就可以了,要注意有一种情况是'.'在中间比如,'x.x'
#include <stdio.h>
char a[10][10];
int find(int i,int j)
{
if (a[i+1][j]=='x' && a[i+2][j]=='x') return 1;
if (a[i][j+1]=='x' && a[i][j+2]=='x') return 1;
if (i>2 && a[i-1][j]=='x' && a[i-2][j]=='x') return 1;
if (j>2 && a[i][j-1]=='x' && a[i][j-2]=='x') return 1;
if (a[i-1][j]=='x' && a[i+1][j]=='x') return 1;
if (a[i][j-1]=='x' && a[i][j+1]=='x') return 1;
if (a[i-1][j+1]=='x' && a[i+1][j-1]=='x') return 1;
if (a[i-1][j-1]=='x' && a[i+1][j+1]=='x') return 1;
if (i>2 && j>2 && a[i-1][j-1]=='x' && a[i-2][j-2]=='x') return 1;
if (a[i+1][j+1]=='x' && a[i+2][j+2]=='x') return 1;
if (j>2 && a[i+1][j-1]=='x' && a[i+2][j-2]=='x') return 1;
if (i>2 && a[i-1][j+1]=='x' && a[i-2][j+2]=='x') return 1;
return 0;
}
int main()
{
int pp;scanf("%d",&pp);
char f[10];
for (int i=0;i<7;i++) a[i][6]=a[6][i]=a[i][0]=a[i][5]=a[0][i]=a[5][i]='o';
while (pp--)
{
getchar();
for (int i=1;i<5;i++)
{
scanf("%s",f);
for (int j=0;j<4;j++)
a[i][j+1]=f[j];
}
for (int i=1;i<5;i++)
for (int j=1;j<5;j++)
if (a[i][j]=='.')
if (find(i,j))
{
printf("yes\n");
goto out;
}
printf("no\n");
out:;
}
return 0;
}
本文共计792个文字,预计阅读时间需要4分钟。
1891: kotomi & 游戏时间限制:1秒内存限制:128MB[提交][状态][Web Board]描述:kotomi最近有点累,想玩个游戏。她九宫格玩腻了,于是想玩十六宫格。
1891: kotomi and game
Time Limit:1 Sec
Memory Limit:128 MB
[Submit][Status][Web Board]
Description
kotomi最近有点累,于是想玩个游戏。
kotomi九宫格玩腻了,于是想玩十六宫格。
只要满足横或竖或对角线上有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
暴力模拟一下就好了...对每个'.'寻找它的周围能不能组成3个'x',情况考虑完全就可以了,要注意有一种情况是'.'在中间比如,'x.x'
#include <stdio.h>
char a[10][10];
int find(int i,int j)
{
if (a[i+1][j]=='x' && a[i+2][j]=='x') return 1;
if (a[i][j+1]=='x' && a[i][j+2]=='x') return 1;
if (i>2 && a[i-1][j]=='x' && a[i-2][j]=='x') return 1;
if (j>2 && a[i][j-1]=='x' && a[i][j-2]=='x') return 1;
if (a[i-1][j]=='x' && a[i+1][j]=='x') return 1;
if (a[i][j-1]=='x' && a[i][j+1]=='x') return 1;
if (a[i-1][j+1]=='x' && a[i+1][j-1]=='x') return 1;
if (a[i-1][j-1]=='x' && a[i+1][j+1]=='x') return 1;
if (i>2 && j>2 && a[i-1][j-1]=='x' && a[i-2][j-2]=='x') return 1;
if (a[i+1][j+1]=='x' && a[i+2][j+2]=='x') return 1;
if (j>2 && a[i+1][j-1]=='x' && a[i+2][j-2]=='x') return 1;
if (i>2 && a[i-1][j+1]=='x' && a[i-2][j+2]=='x') return 1;
return 0;
}
int main()
{
int pp;scanf("%d",&pp);
char f[10];
for (int i=0;i<7;i++) a[i][6]=a[6][i]=a[i][0]=a[i][5]=a[0][i]=a[5][i]='o';
while (pp--)
{
getchar();
for (int i=1;i<5;i++)
{
scanf("%s",f);
for (int j=0;j<4;j++)
a[i][j+1]=f[j];
}
for (int i=1;i<5;i++)
for (int j=1;j<5;j++)
if (a[i][j]=='.')
if (find(i,j))
{
printf("yes\n");
goto out;
}
printf("no\n");
out:;
}
return 0;
}

