poj 2920 Mine Map【BFS】
来源:互联网 发布:c语言主要应用领域 编辑:程序博客网 时间:2024/05/15 12:58
Mine Map
Time Limit: 3000MS Memory Limit: 65536KTotal 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;}
0 0
- POJ 2920 Mine Map(BFS)
- poj 2920 Mine Map【BFS】
- The Mine (bfs)
- poj 2612 Mine Sweeper
- poj 2612 Mine Sweeper
- poj 2612 Mine Sweeper
- poj 2612 Mine Sweeper
- POJ 2612 Mine Sweeper 模拟
- POJ 2612 Mine Sweeper G++
- HDU 4678 - Mine - BFS + Game Theory
- hdu 3316 Mine sweeping(BFS)
- hdu 4678 Mine(bfs+博弈)
- HDU4678 Mine bfs+博弈 2013多校8
- POJ 2046 Gap(bfs+状态压缩+map)
- MINE
- MINE
- mine
- Mine
- 如何让iOS 保持界面流畅?这些技巧你知道吗
- gvim: GConf-WARNING **: Client failed to connect to the D-BUS daemon
- 关于单表代换密码分析程序设计{C++}
- C#中struct与class的区别
- malloc 能申请多大的空间 http://www.zhihu.com/question/20836462
- poj 2920 Mine Map【BFS】
- 计算机视觉、机器学习相关领域论文和源代码大集合
- Apache Stratos探究:Apache Stratos 4.1.x 的架构
- opencv的KeyPoint
- 用eclipse开发Android,用Genymotion测试时报错adb端口被占用时
- C#中使用split分割字符串的方法小结
- 新浪免费天气Api简单使用说明
- 文件上传时,seesion丢失
- 开启我的博客之旅