G - Ancient Go

Time Limit: 1 Sec

Memory Limit: 256 MB

题目连接

Description

Yu Zhou likes to play Go with Su Lu. From the historical research, we found that there are much difference on the rules between ancient go and modern go.

Here is the rules for ancient go they were playing:

The game is played on a 8×8 cell board, the chess can be put on the intersection of the board lines, so there are 9×9 different positions to put the chess.
    Yu Zhou always takes the black and Su Lu the white. They put the chess onto the game board alternately.
    The chess of the same color makes connected components(connected by the board lines), for each of the components, if it's not connected with any of the empty cells, this component dies and will be removed from the game board.
    When one of the player makes his move, check the opponent's components first. After removing the dead opponent's components, check with the player's components and remove the dead components.

One day, Yu Zhou was playing ancient go with Su Lu at home. It's Yu Zhou's move now. But they had to go for an emergency military action. Little Qiao looked at the game board and would like to know whether Yu Zhou has a move to kill at least one of Su Lu's chess.

Input

The first line of the input gives the number of test cases, T(1≤T≤100). T test cases follow. Test cases are separated by an empty line. Each test case consist of 9 lines represent the game board. Each line consists of 9 characters. Each character represents a cell on the game board. . represents an empty cell. x represents a cell with black chess which owned by Yu Zhou. o represents a cell with white chess which owned by Su Lu.

Output

For each test case, output one line containing Case #x: y, where x is the test case number (starting from 1) and y is Can kill in one move!!! if Yu Zhou has a move to kill at least one of Su Lu's components. Can not kill in one move!!! otherwise.

Sample Input

2

.......xo
.........
.........
..x......
.xox....x
.o.o...xo
..o......
.....xxxo
....xooo. ......ox.
.......o.
...o.....
..o.o....
...o.....
.........
.......o.
...x.....
........o

Sample Output

Case #1: Can kill in one move!!!
Case #2: Can not kill in one move!!!

HINT

题意

下围棋,让你下一粒子,然后问你能否至少围住一个o

题解:

数据范围才9*9,直接瞎暴力就行了

枚举每一个位置,都下一个子,然后check就好了

代码:

#include<stdio.h>
#include<iostream>
#include<math.h>
#include<cstring>
using namespace std; string s[];
int vis[][];
int dx[]={,-,,};
int dy[]={,,,-};
int check2(int x,int y)
{
vis[x][y]=;
if(x<||x>=||y<||y>=)return ;
for(int i=;i<;i++)
{
int xx = x+dx[i];
int yy = y+dy[i];
if(xx<||xx>=||yy<||yy>=)continue;
if(vis[xx][yy])continue;
if(s[xx][yy]=='.')return ;
if(s[xx][yy]=='o'&&check2(xx,yy))
return ;
}
return ;
}
int check(int x,int y)
{
if(s[x][y]!='.')return ;
s[x][y]='x';
for(int i=;i<;i++)
{
int xx = x+dx[i];
int yy = y+dy[i];
if(xx<||xx>=||yy<||yy>=)continue;
if(s[xx][yy]=='o')
{
memset(vis,,sizeof(vis));
if(!check2(xx,yy))
return ;
}
}
s[x][y]='.';
return ;
}
int main()
{
int t;scanf("%d",&t);
for(int cas=;cas<=t;cas++)
{
for(int i=;i<;i++)
cin>>s[i];
int flag = ;
for(int i=;i<;i++)
{
for(int j=;j<;j++)
{
if(s[i][j]=='o'||s[i][j]=='x')continue;
if(check(i,j))
{
flag = ;
s[i][j]='.';
break;
}
}
}
if(flag)
printf("Case #%d: Can kill in one move!!!\n",cas);
else
printf("Case #%d: Can not kill in one move!!!\n",cas);
}
}

2015南阳CCPC G - Ancient Go 暴力的更多相关文章

  1. 2015南阳CCPC G - Ancient Go dfs

    G - Ancient Go Description Yu Zhou likes to play Go with Su Lu. From the historical research, we fou ...

  2. 2015南阳CCPC H - Sudoku 暴力

    H - Sudoku Time Limit: 1 Sec Memory Limit: 256 MB 题目连接 无 Description Yi Sima was one of the best cou ...

  3. 2015南阳CCPC E - Ba Gua Zhen 高斯消元 xor最大

    Ba Gua Zhen Time Limit: 1 Sec Memory Limit: 256 MB 题目连接 无 Description During the Three-Kingdom perio ...

  4. 2015南阳CCPC F - The Battle of Guandu 多源多汇最短路

    The Battle of Guandu Time Limit: 1 Sec Memory Limit: 256 MB 题目连接 无 Description In the year of 200, t ...

  5. 2015南阳CCPC L - Huatuo's Medicine 水题

    L - Huatuo's Medicine Time Limit: 1 Sec Memory Limit: 256 MB 题目连接 无 Description Huatuo was a famous ...

  6. 2015南阳CCPC D - Pick The Sticks dp

    D - Pick The Sticks Time Limit: 1 Sec Memory Limit: 256 MB 题目连接 无 Description The story happened lon ...

  7. 2015南阳CCPC A - Secrete Master Plan 水题

    D. Duff in Beach Time Limit: 1 Sec Memory Limit: 256 MB 题目连接 无 Description Master Mind KongMing gave ...

  8. 2015南阳CCPC L - Huatuo's Medicine 签到

    L - Huatuo's Medicine Description Huatuo was a famous doctor. He use identical bottles to carry the ...

  9. 2015南阳CCPC H - Sudoku 数独

    H - Sudoku Description Yi Sima was one of the best counselors of Cao Cao. He likes to play a funny g ...

随机推荐

  1. (3)Spring定时任务的几种实现

    Spring定时任务的几种实现 近日项目开发中需要执行一些定时任务,比如需要在每天凌晨时候,分析一次前一天的日志信息,借此机会整理了一下定时任务的几种实现方式,由于项目采用spring框架,所以我都将 ...

  2. Oracle 不同故障的恢复方案

    之前在Blog中对RMAN 的备份和恢复做了说明,刚看了下,在恢复这块还有知识点遗漏了. 而且恢复这块很重要,如果DB 真要出了什么问题,就要掌握对应的恢复方法. 所以把DB的恢复这块单独拿出来说明一 ...

  3. 获取某月第一天,最后一天的sql server脚本 【转】http://blog.csdn.net/chaoowang/article/details/9167969

    这是计算一个月第一天的SQL 脚本:    SELECT DATEADD(mm, DATEDIFF(mm,0,getdate()), 0) --当月的第一天 SELECT DATEADD(mm, DA ...

  4. delphi 当月的第一天, 当月的最后一天

    //取当月的第一天function TDealWithXML.FDOM(Date: TDateTime): TDateTime;var Year, Month, Day: Word;begin Dec ...

  5. Oracle数据库管理之创建和删除数据库

    转自:http://supportopensource.iteye.com/blog/678898 一.数据库管理概述 在完成Oracle软件安装后,DBA就应该对组织和管理数据库负责任,其主要任务是 ...

  6. JS数组(Array)操作汇总

    1.去掉重复的数组元素.2.获取一个数组中的重复项.3.求一个字符串的字节长度,一个英文字符占用一个字节,一个中文字符占用两个字节.4.判断一个字符串中出现次数最多的字符,统计这个次数.5.数组排序. ...

  7. 数据库连接类oracleHelper

    //=============================================================================== // OracleHelper ba ...

  8. 02《老罗Android开发视频教程》第二集:android系统框架的介绍

  9. spring-boot系列:初试spring-boot

    部署父工程 <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http: ...

  10. MingW编译virt-viewer

    在http://www.spice-space.org/download.html可以下载到windows版本的virt viewer virt-viewer-x86-0.5.7.msi和virt-v ...