`

NENU 怪盗基德的游戏

 
阅读更多

Description

 

Kid和新一开始玩一个有趣的游戏。游戏规则是这样的:在一个n*m棋盘中,某个位置有一颗棋子,并且有些位置是不能走的。现在两个人轮流操作,每次可以将棋子向上下左右的格子里走一格,不能走出边界。若一方不能行动,或者走到了已经走过的格子,则算失败。
现在给出棋盘的初始状态,柯南先行。请判断当双方均用最优策略时,柯南是否可以获胜。

Input

数据有多组。
第一行为两个数n, m (2 <= n, m <= 5)。代表棋盘有n行m列。
接下来有n行,每行m个字符,代表棋盘的初始状态。其中’.’代表可行区域,’x’代表不能走的区域,’S’代表棋子的初始位置。

Output

对每组数据,若柯南可以获胜,则输出”Yes”;否则输出”No”。

Sample Input

3 3

Sx.

.x.

...

Sample Output

No

 

#include <cstdio>
#include <cstring>
#include <iostream>
#define Maxn 6
using namespace std;

char map[Maxn][Maxn];
int m,n;
int mark[Maxn][Maxn];
int const dir[4][2] = {0, 1, 0, -1, 1, 0, -1, 0};

inline bool check(int x, int y) 
{
    return x >= 0 && x < n && y >= 0 && y < m && map[x][y] == '.';
}

int dfs(int x,int y)
{
	mark[x][y]=1;
	int tx,ty;
	bool flag=0;
	for(int i=0;i<4;i++)
	{
		tx=x+dir[i][0];
		ty=y+dir[i][1];
		if(check(tx,ty) && !mark[tx][ty])
			flag|=!dfs(tx,ty);
	}
	mark[x][y]=0;
	return flag;
}

int main()
{
	while(~scanf("%d %d",&n,&m))
	{
		if(n==0)	break;
		for(int i=0;i<n;i++)
			scanf("%s",map[i]);
		memset(mark, 0, sizeof(mark));
		for(int i=0;i<n;i++)
		{
			for(int j=0;j<m;j++)
			{
				if(map[i][j]=='S')
				{
					if(dfs(i,j))	printf("Yes\n");
					else	printf("No\n");
					goto skip;
				}
			}
		}	
		skip:;
	}
	return 0;
}

 

大致思路:从柯南开始,每次对周围进行搜索,每次将flag进行取反操作,表示柯南与基德的不同回合。如果dfs到了一条flag true的路径,则输出yes。

分享到:
评论

相关推荐

    nenu acm 模板

    nenu acm 模板,虽然不是全部原创,但融合了很多现有模板,并加入了部分自己的东西,全面了模板的注释。

    NENU.Nice.抢答器

    本产品是抢答器的V1版本,包括服务端和客户端。服务端包含SocketServer和后台管理系统。后台管理系统有“用户管理”,“题目管理”,“上传题库”,“举办竞赛”等功能。客户端是一个android手机的apk程序,有抢答,...

    NENU_植物系统与进化

    NENU_植物系统与进化

    android launcher

    android launcher4.0 未改动

    联系人信息管理ASP.NET(C#)

    NENU曹毅老师期中作业 ASP.NET(C#)联系人信息管理系统

    FPGA实现VGA的字符显示

    利用FPGA实现VGA显示字符NENU,并且通过按键实现字符的移动,VGA使用ADV7123芯片

    mac扫描器3.1(nbtscan)注册版

    http://opac.nenu.edu.cn/html/ruanjianxiazai/virus/20080317/533.html tuzi提示,机器号即注册码,这个程序可以在arp爆发的时候准确的获得物理地址和ip地址以及机器名等的对应关系,配合arp 防火墙使用,可以迅速...

    第三周作业 Git和概要设计1

    设计文档请提交到任务2的个人项目仓库中,并可以下载任务2: 创建个人的项目仓库,并把项目仓库的网址URL发到老师邮箱zouxh766@nenu.edu.cn3、

    gatsby-simple-starter:我的盖茨比简单入门工具,用于测试

    gatsby-简单启动器 具备网站所需的基本知识的入门者 从您的CLI运行此启动程序(假设已安装Gatsby): gatsby new gatsby-site https://github.com/nenu-git/gatsby-simple-starter 在开发中运行 yarn start

    demo.html

    demo.html

Global site tag (gtag.js) - Google Analytics