HDU5546 Ancient Go DFS
题意:给定一个9*9的棋盘,问黑子能否在下一步将白子围住(四面)。
由于数据不大,可以直接将'.'换成'x',用DFS搜索。
#include<cstdio>
#include<cstring>
using namespace std;
char chess[11][11];
bool visit[11][11];
int turnx[4]={1,-1,0,0};
int turny[4]={0,0,1,-1};
int flag;
bool in(int x,int y)
{
if(x<0||y<0||x>=9||y>=9)
return 0;
return 1;
}
void dfs(int x,int y)
{
if(chess[x][y]=='.')//如果有出路,则标记为0,说明在该点下子无法获胜
{
flag=0;
return;
}
for(int k=0;k<4;k++)
{
int nx=x+turnx[k];
int ny=y+turny[k];
if(in(nx,ny)&&!visit[nx][ny]&&chess[nx][ny]!='x')
{
visit[nx][ny]=1;
dfs(nx,ny);
}
}
}
int solve()
{
for(int i=0;i<9;i++)
{
for(int j=0;j<9;j++)
{
if(chess[i][j]=='.')
{
chess[i][j]='x';
for(int k=0;k<4;k++)
{
int nx=i+turnx[k];
int ny=j+turny[k];
if(in(nx,ny)&&chess[nx][ny]=='o')
{
memset(visit,0,sizeof(visit));
visit[nx][ny]=1;
flag=1;
dfs(nx,ny);
if(flag)
return 1;//直接返回,跳出循环
}
}
chess[i][j]='.';//还原
}
}
}
return 0;
}
int main()
{
int T,cas=1;
scanf("%d",&T);
while(T--)
{
for(int i=0;i<9;i++)
scanf("%s",chess[i]);
flag=1;
memset(visit,0,sizeof(visit));
int ans=solve();
if(ans)
printf("Case #%d: Can kill in one move!!!\n",cas++);
else
printf("Case #%d: Can not kill in one move!!!\n",cas++);
}
return 0;
}
HDU5546 Ancient Go DFS的更多相关文章
- K - Ancient Messages(dfs求联通块)
K - Ancient Messages Time Limit:3000MS Memory Limit:0KB 64bit IO Format:%lld & %llu Subm ...
- 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 ...
- HDU 3839 Ancient Messages(DFS)
In order to understand early civilizations, archaeologists often study texts written in ancient lang ...
- hdu 3839 Ancient Messages (dfs )
题目大意:给出一幅画,找出里面的象形文字. 要你翻译这幅画,把象形文字按字典序输出. 思路:象形文字有一些特点,分别有0个圈.1个圈.2个圈...5个圈.然后dfs或者bfs,就像油井问题一样,找出在 ...
- Ancient Go---hdu5546(dfs爆搜CCPC题目)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5546 题意就是两个人下围棋,问在下一颗x是否能杀死o,'.'是空位子: 枚举所有的点,判断是否合法即可 ...
- Ancient Go(简单DFS)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5546 AC代码: #include<iostream> #include<cstdi ...
- Ancient Printer[HDU3460]
Ancient Printer Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 131072/65536 K (Java/Others)Tot ...
- HDU1010 DFS+剪枝
Tempter of the Bone Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Othe ...
- hdu.1010.Tempter of the Bone(dfs+奇偶剪枝)
Tempter of the Bone Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Othe ...
随机推荐
- NT内存
在NT/2K/XP中,操作系统利用虚拟内存管理技术来维护地址空间映像,每个进程分配一个4GB的虚拟地址空间.运行在用户态的应用程序,不能直接访问物理内存地址:而运行在核心态的驱动程序,能将虚拟地址空间 ...
- hdu---1024Max Sum Plus Plus(动态规划)
Max Sum Plus Plus Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others ...
- IDEA配置maven
步骤:Setting....或Ctrl+Alt+S
- uva 10118
10118 - Free Candies Time limit: 30.000 seconds Little Bob is playing a game. He wants to win some c ...
- jQuery制作瀑布流(转)
“瀑布流布局”随着pinterest网的流行而出名,现在国内使用这种风格布局的网站也越来越多,比如说Mark之,蘑菇街,点点网,哇哦等等.我第一次听到这个布局名称是来自于“乔花写的<瀑布流布局浅 ...
- 第一个简单的DEMO
一个联系人管理的DEMO,支持CURD 运行效果图: Controller的设计: 总结: Web API的Controller都继承自ApiController. Web API的Action的命名 ...
- sharepoint2010无法创建网站集
出现以上错误,查看IIS中有关Sharepoint的网站中的“身份验证”中ASP.Net模拟是否为禁用,如果为禁用,请启用即可.
- 使用ContentResolver添加数据、查询数据
import java.util.ArrayList;import java.util.HashMap;import java.util.Map; import android.os.Bundle;i ...
- POJ 2262 Goldbach's Conjecture 数学常识 难度:0
题目链接:http://poj.org/problem?id=2262 哥德巴赫猜想肯定是正确的 思路: 筛出n范围内的所有奇质数,对每组数据试过一遍即可, 为满足b-a取最大,a取最小 时空复杂度分 ...
- NOIP 2003解题报告
第一题(神经网络): 题目大意,给出一些点,每个点都有2个值,c和u,给出一些有向边,权值为w.入度为0的点的c已知,其它点的c未知,每个入度不为0的点node的c等于sum(c[k]*w[k][no ...