题目描述:寻宝

有这么一块神奇的矩形土地,为什么神奇呢?因为上面藏有很多的宝藏。该土地由N*M个小正方形土地格子组成,每个小正方形土地格子上,如果标有“E”,则表示该格可以通过;如果标有“X”,则表示该格不能通过。现在你处于其中的一格上,用“P”表示,你只能向与你所在格子相邻的上、下、左、右四个方向移动,当然如果你即将移向的格子上标有“X”,则不能通过。现在的任务是:如果你能从起点通过每个用“E”标示的格子一次且仅一次,则你将寻宝成功,否则则失败。

输入

输入包括如下几部分。 第一部分:输入两个数N(1<=N<=6)和M(1<=M<=6),分别表示该土地的行和列。 第二部分:输入一个只能由“P”、“X”、“E”构成的N*M大小的矩阵,且“P”只能出现一次,代表你当前所在位置。

输出

如果能寻宝成功,输出“YES”;否则输出“NO”。

样例输入

2 2
PE
ES 4 4
PXEE
EXEE
EEEE
EEEE

样例输出

NO
YES 思路:简单的DFS。
之前总是AC不正确是因为初始化只在程序进入的时候初始化了一次,后面没有所以结果错了,下次记得初始化!!!!!
// 寻宝.cpp : 定义控制台应用程序的入口点。
// #include "stdafx.h" //没有AC的原因是flag只是初始化了一次!!!!!
#include <iostream>
#include <cstring>
using namespace std; int n, m, num,sr,sl, flag, vis[][], dir[][] = { , , -, , , , , - };
char map[][]; void DFS(int x, int y, int step)
{
if (step == num) { flag = ; return; } if (flag) return; for (int i = ; i < ; i++)
{
int nx = dir[i][] + x;
int ny = dir[i][] + y;
if (nx >= && ny >= && nx < n && ny < m && !vis[nx][ny] && map[nx][ny]=='E')
{
vis[x][y] = ;
DFS(nx, ny, step + );
vis[x][y] = ;
}
}
} int main()
{
while (cin>>n>>m)
{ memset(vis, , sizeof(vis));
memset(map, '\0', sizeof(map));
num = ;
flag = ; for (int i = ; i < n; i++)
cin >> map[i]; for (int i = ; i < n; i++)
{
for (int j = ; j < m; j++)
{
if (map[i][j] == 'E')
num++;
else if (map[i][j] == 'P')
{
sr = i;
sl = j;
}
}
} vis[sr][sl] = ;
DFS(sr, sl, ); if (flag) cout << "YES" << endl;
else cout << "NO" << endl; } return ;
}
 
 

ACM-寻宝的更多相关文章

  1. nyoj 82 迷宫寻宝(一)

    点击打开链接 迷宫寻宝(一) 时间限制:1000 ms  |  内存限制:65535 KB 难度:4 描述 一个叫ACM的寻宝者找到了一个藏宝图,它根据藏宝图找到了一个迷宫,这是一个很特别的迷宫,迷宫 ...

  2. cdoj 1141 酱神寻宝 状压dp

    酱神寻宝 Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://acm.uestc.edu.cn/#/problem/show/1141 Descri ...

  3. 迷宫寻宝(一)(bfs)

    迷宫寻宝(一) 时间限制:1000 ms  |  内存限制:65535 KB 难度:4   描述 一个叫ACM的寻宝者找到了一个藏宝图,它根据藏宝图找到了一个迷宫,这是一个很特别的迷宫,迷宫里有N个编 ...

  4. Problem 2285 迷宫寻宝 (BFS)

    题目链接:http://acm.fzu.edu.cn/problem.php?pid=2285 Problem 2285 迷宫寻宝 Accept: 323    Submit: 1247Time Li ...

  5. Problem 2285 迷宫寻宝

    http://acm.fzu.edu.cn/problem.php?pid=2285 Problem Description 洪尼玛今天准备去寻宝,在一个n*n (n行, n列)的迷宫中,存在着一个入 ...

  6. 2018.10.26 浪在ACM 集训队第四次测试赛

    2018.10.26 浪在ACM 集训队第四次测试赛 题目一览表 来源 考察知识点 完成时间 A 生活大爆炸版 石头剪刀布  NOIP 提高组 2014   模拟???  2018.11.9 B 联合 ...

  7. 2018 HNUCM ACM集训队选拔第一场

    1.小c的倍数问题 http://acm.hdu.edu.cn/showproblem.php?pid=6108 分析: 比赛的时候真的是各种想,结果发现自己是想多了...数论基础差得一批 求有多少个 ...

  8. 2014哈商大ICPC/ACM校赛解题报告

    被debug邀请去參加校赛,哎,被虐..我对不起工大.. 由于本人不搞ACM,算法处于HelloWorld水准.. 虽然题目除了鸟不拉屎星人之外都非常水,但我能做到这个程度,全然是超水平发挥了.. 数 ...

  9. 35-迷宫寻宝(一)-NYOJ82

    http://acm.nyist.edu.cn/JudgeOnline/problem.php?pid=82 迷宫寻宝(一) 时间限制:1000 ms  |  内存限制:65535 KB 难度:4   ...

  10. NYOJ82 迷宫寻宝(一)【BFS】

    迷宫寻宝(一) 时间限制:1000 ms  |  内存限制:65535 KB 难度:4 描写叙述 一个叫ACM的寻宝者找到了一个藏宝图.它依据藏宝图找到了一个迷宫,这是一个非常特别的迷宫,迷宫里有N个 ...

随机推荐

  1. linux用户权限、系统信息相关命令(待学)

    用户权限相关命令 目标 用户 和 权限 的基本概念 用户管理 终端命令 组管理 终端命令 修改权限 终端命令 01.用户和权限的基本概念 1.1 基本概念 用户 是Linux系统工作中重要的一环, 用 ...

  2. jdbc学习over

    这次的代码和之前学习到一般的代码主要就是将一些很常见的操作(建立连接.清除连接)不管做什么操作都需要用到它们,所以将它们单独放到另一个工具类里面去. 用到的术语: 1.事务:https://www.c ...

  3. 本周总结(19年暑假)—— Part3

    日期:2019.7.28 博客期:109 星期日 这几天要练车,嗯呢,但是对于分布式数据库的研究并没有停止!

  4. iis下发布MVC网站

    1.首先检查有没有安装iis,没有的话先安装iis 2. 3.选择应用程序池的时候看有没有asp.net 4.0 如果没有先安装. 首先以管理员身份打开“运行”输入cd C:\Windows\Micr ...

  5. CentOS6.9安装redis

    目录 Centos6.9下的Redis安装和配置(最简易方式) redis客户端登录方式 Centos6.9下的Redis安装和配置(最简易方式) 在服务器上创建一个目录/service,然后下载re ...

  6. 十七 Spring的JDBC模版:使用开源连接池,DBCP,C3P0

    DBCP的配置以及使用 引入jar包

  7. 【剑指Offer面试编程题】题目1516:调整数组顺序使奇数位于偶数前面--九度OJ

    题目描述: 输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分,所有的偶数位于位于数组的后半部分,并保证奇数和奇数,偶数和偶数之间的相对位置不变. 输入: 每个输 ...

  8. Netty实现原理和使用

    参考: https://www.jdon.com/concurrent/netty.html Java NIO原理和使用 参考:https://www.jdon.com/concurrent/nio% ...

  9. 通过python 构建一个简单的聊天服务器

    构建一个 Python 聊天服务器 一个简单的聊天服务器 现在您已经了解了 Python 中基本的网络 API:接下来可以在一个简单的应用程序中应用这些知识了.在本节中,将构建一个简单的聊天服务器.使 ...

  10. 入门学习C链接

    参考链接:http://c.biancheng.net/view/465.html 在里面链接下载了:code:block,还有C语言入门的PDF文件. 常看网站:https://www.cnblog ...