Mine Map
Time Limit: 3000MS   Memory Limit: 65536K
Total Submissions: 1023   Accepted: 493

题目大意:

给一个n*n的金库,金库中有地雷‘*’和空格'?',现在你从金库中间出发,刚刚开始时,【遍历当前格子周围8个格子,如果周围8个格子有一个地雷,则把当前格子标记为 ‘ # ’,如果没有,你可以移动到当前格子的周围8个格子中的任意一个格子,且把当前格子标记为  ‘ . ’ 】然后重复【】中的步骤,直到把所有能走的格子都走过为止。

分析:

刚刚开始时,把map[][]数组初始化为‘?’,【注意,是8个方向都可以走】。

在走的过程中,遇到‘.’或'#'时【这些是已走过的标记】,就不要再走了【浪费时间嘛】,

已Accept代码【C++提交】

#include <cstdio>
#include <cstring>
#include <cstdlib>
#include <queue>
using namespace std;char map[301][301];
int dx[] = {0, 0, 1, -1, 1, 1, -1, -1};//注意8个方向
int dy[] = {-1, 1, 0, 0, 1, -1, 1, -1};
int n, m;
int r, c;
int x, y;struct Node {int x, y;Node () {}Node (int x, int y) : x(x), y(y) {}
};bool Decide(int a, int b) {for(int i = 0; i < 8; i++) {int kx = a + dx[i];int ky = b + dy[i];if(kx >= 1 && kx <= n && ky >= 1 && ky <= n && map[kx][ky] == '*')//是否越界 return true;}return false;
}void BFS() {queue <Node> Q;while(!Q.empty())Q.pop();if(Decide(x, y))map[x][y] = '#';elsemap[x][y] = '.';if(map[x][y] == '.')Q.push(Node(x, y));while(!Q.empty()) {Node k = Q.front();Q.pop();int nx = k.x;int ny = k.y;for(int j = 0; j < 8; j++) {int cx = nx + dx[j];int cy = ny + dy[j];if(cx >= 1 && cx <= n && cy >= 1 && cy <= n && map[cx][cy] == '?') {if(Decide(cx, cy))map[cx][cy] = '#';elsemap[cx][cy] = '.';if(map[cx][cy] == '.')//周围为则入队 Q.push(Node(cx, cy));}}}
}int main() {int T, K = 1;scanf("%d", &T);while(T--) {scanf("%d%d", &n, &m);for(int i = 1; i <= n; i++)for(int j = 1; j <= n; j++)map[i][j] = '?';for(int i = 1; i <= m; i++) {scanf("%d%d", &r, &c);map[r][c] = '*';}x = y = (n + 1) / 2;BFS();printf("Scenario #%d:\n", K++);for(int i = 1; i <= n; i++) {for(int j = 1; j <= n; j++) {printf("%c", map[i][j]);}printf("\n");}printf("\n");//注意 输出 格式 }system("pause");return 0;
}

poj 2920 Mine Map【BFS】相关推荐

  1. POJ 3414 Pots【BFS】+ Python

    原题链接: 3414 -- Pots 参考资料:POJ 3414 - Pots | 眈眈探求 POJ 3414 Pots[BFS][图搜] - it610.com 一 特别注意: 1. 每一种操作对应 ...

  2. 【BFS】魔板(c++基础算法)

    本专栏上一篇:[BFS]八数码问题(c++基础算法) 目录 一.读题 ①题面 ②题意 三.做题 ①算法原理 ②算法实现 Ⅰ三种基本操作 Ⅱ操作序列 Ⅲ输出 Ⅳ一个特殊情况 四.AC代码 最后 一.读题 ...

  3. 【枚举】【二分答案】【分块答案】【BFS】【最大流】【Dinic】bzoj1189 [HNOI2007]紧急疏散evacuate...

    [法一]枚举Time(0~N*M): S->'.'(1); 'D'->T(Time); '.'->'D'(dis(用BFS预处理,注意一旦到达'D',BFS就不能继续扩展了,注意di ...

  4. nyoj 284 坦克大战【bfs】

    坦克大战 时间限制:1000 ms  |  内存限制:65535 KB 难度:3 描述 Many of us had played the game "Battle city" i ...

  5. [kuangbin]专题二 搜索进阶 Escape HDU - 3533【BFS】

    [题目描述] The students of the HEU are maneuvering for their military training. The red army and the blu ...

  6. 【BFS】献给阿尔吉侬的花束(C++)

    [题目描述] 阿尔吉侬是一只聪明又慵懒的小白鼠,它最擅长的就是走各种各样的迷宫.今天它要挑战一个非常大的迷宫,研究员们为了鼓励阿尔吉侬尽快到达终点,就在终点放了一块阿尔吉侬最喜欢的奶酪.现在研究员们想 ...

  7. 【BFS】天棋哥哥大战AlphaGo 校OJ2395

    题目描述 3月15日,人机围棋大战巅峰对决在韩国首尔落下帷幕.五番棋的最后一局中,韩国著名棋手李世乭尽管与人工智能"AlphaGo"缠斗至官子阶段,但在双双进入读秒后最终还是投子认 ...

  8. 底板芯片组与内存映射(Motherboard Chipsets and the Memory Map) 【转】

    转自:http://blog.chinaunix.net/uid-25909619-id-4194650.html 底板芯片组与内存映射 我打算写一些关于计算机内部构造(computer intern ...

  9. 【bfs】WJ的逃离

    WJ(J)的逃离 题目大意: 有一个n×m的矩阵,*是不可走的,0是可走的,求1,1到n,m的最小转弯次数 原题: 题目描述 当WJ醒来时,发现自己被困在一个地图的左上角,幸好WJ有张图,并了解到出口 ...

最新文章

  1. linux7开放3306端口,CentOS 7 开放3306端口访问
  2. UIBezierPath的使用(持续更新)
  3. python如何编写excel_如何用Python编写Excel
  4. 基于SNN脉冲神经网络的FPGA实现介绍
  5. SAP CRM里Interaction Object是个什么东东
  6. mysql单表操作_mysql单表操作
  7. saltstack案例 自助机
  8. 使用springboot集成腾讯云短信服务,解决配置文件读取乱码问题
  9. paip.编程语言到底有没有优劣之分优秀之分
  10. 雷蛇游戏软件显示无法访问服务器,亦工作亦游戏 Razer雷云设置技巧-鼠标设置软件...
  11. Pspice仿真实验-RC滤波器电路
  12. 嵌入式linux/鸿蒙开发板(IMX6ULL)开发(一) 嵌入式Linux开发基本概念以及开发流程介绍
  13. 难以置信!网易首席架构师竟用了500页笔记,把网络协议给趣谈了
  14. 半年面试,我总结出了java面试笔记
  15. 二进制 Kubernetes 查看证书过期时间
  16. “Let’s Eat Grandma”:标点符号(句法树)增强语义表达,用于情感分析
  17. HTML文件转JSP文件
  18. ISO9001质量管理体系认证详细介绍
  19. zynq Linux软件中断,zynq7010 在 linux 系统下 irq_f2p 中断驱动-Go语言中文社区
  20. 代码重复率PHP,终端代码重复率检测实践

热门文章

  1. VS2005的复制网站功能
  2. 电脑如何找到文件资源管理器
  3. react路由传参问题
  4. css文本显示省略号
  5. 如何锁定Excel表格的公式不被修改
  6. 对接快递100快递管家API之订单信息修改接口
  7. 20170118:File类与IO流,File类,IO流的基本原理,IO流的分类,文件字节流与文件字符流
  8. 随机梯度下降与梯度下降
  9. 腾讯企业邮箱,QQ邮箱 支持通过客户端进行邮件管理
  10. “微博+X”企业社交第一波浪潮的褪去