题目描述:寻宝

有这么一块神奇的矩形土地,为什么神奇呢?因为上面藏有很多的宝藏。该土地由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. flex布局(非常重要)

    首先明确一点是, flex 是 flex-grow.flex-shrink.flex-basis的缩写.故其取值可以考虑以下情况: flex 的默认值是以上三个属性值的组合.假设以上三个属性同样取默认 ...

  2. [经验] 关于 Java 中的非空判断

    在写项目的时候, 遇到一个问题 假设有一个控制层接口为: @ResponseBody @RequestMapping(value = "test", method = Reques ...

  3. Linux基础网络配置

    目录 Linux基础网络配置 参考 IP配置 Route配置 DNS指向 ss命令 *网络排查工具 Linux基础网络配置

  4. 隐藏浏览器body的滚动条,并进行滚动

    在使用html2canvas插件的时候,发现截图完成后右侧区域被覆盖了一点,后面才发现是滚动器占了位置 网上有些解决滚动条的方法,不过他们都是相对盒子的,而我这个是对body的 最终发现引用下面这个c ...

  5. c++类的创建与使用

    c++类的创建与使用 前言: 之前一直对c++的类的创建与使用不太熟悉,有些概念还是有点模糊,借着这次休息的机会整理一下对应是知识点.如有不正确的地方还希望各位读者批评指正. 一.C++中public ...

  6. linux系统登陆过程

    一.物理直连登陆过程 初始化进程init 会根据直接连接的字符终端设备,打开getty程序,并关联在字符终端设备上tty1/2/3/4/5/6/7....上,在不同的终端设备上提示用户输入信息,等待终 ...

  7. 【mysql】mysq8.0新特性

    一.MySQL8.0简介   mysql8.0现在已经发布,2016-09-12第一个DM(development milestone)版本8.0.0发布.新的版本带来很多新功能和新特性,对性能也得到 ...

  8. Spark教程——(4)Spark-shell调用SQLContext(HiveContext)

    启动Spark-shell: [root@node1 ~]# spark-shell Setting default log level to "WARN". To adjust ...

  9. input文件类型上传,或者作为参数拼接的时候注意的问题!

    1.ajax请求参数如果为文本类型,直接拼接即可.如果为file类型就需要先获取文件信息 2.获取文件信息: HTML代码: <div class="form-group"& ...

  10. MyBatisPlus代码生成 mvc项目

    package com.test; import com.baomidou.mybatisplus.annotation.DbType; import com.baomidou.mybatisplus ...