题意:给你一个迷宫地图,让你走。问最多可以走多少个“."

思路:dfs

  1. 找到起点,然后对起点进行dfs操作。
  2. dfs操作时,要把当前的位置标志成"#"表示已经走过,然后进行四个方向的遍历。如果当前可以满足不超过范围,且是"."的就继续dfs

代码上的注意:四个方向上的遍历,用一个二维数组比较方便

const int dir[][]
{
{ ,- },{ , },{ , },{ -, }
};

解决问题的代码:

#include <iostream>
#include <cstdio>
using namespace std;
int w, h;
int ans = ;
char map[][];
const int dir[][]
{
{ ,- },{ , },{ , },{ -, }
};
int bfs(const int x, const int y)
{
map[x][y] = '#';
++ans;
for (int i = ; i < ; i++)
{
int cur_x = x + dir[i][];
int cur_y = y + dir[i][];
if (cur_x >= && cur_x < h&&cur_y >= && cur_y < w&&map[cur_x][cur_y] == '.')
bfs(cur_x, cur_y);
}
return ans;
}
int main()
{
while (scanf("%d%d", &w, &h) != EOF)
{
if (w == && h == ) break;
for (int i = ; i < h; i++)
for (int j = ; j < w; j++)
cin >> map[i][j];
bool flag = true;
if (flag)
{
for (int i = ; i<h; i++)
for (int j = ; j<w; j++)
if (map[i][j] == '@')
{
cout << bfs(i, j) << endl;
flag = false;
}
}
if (!flag)
{
ans = ;
continue;
}
}
}

poj 1979 走多少个‘ . '问题 dfs算法的更多相关文章

  1. POJ 3620 Avoid The Lakes(dfs算法)

    题意:给出一个农田的图,n行m列,再给出k个被淹没的坐标( i , j ).求出其中相连的被淹没的农田的最大范围. 思路:dfs算法 代码: #include<iostream> #inc ...

  2. POJ 1979 Red and Black【DFS】

    标准DFS,统计遍历过程中遇到的黑点个数 #include<cstdio> #include<vector> #include<queue> #include< ...

  3. poj 1979 Red and Black(dfs水题)

    Description There is a rectangular room, covered with square tiles. Each tile is colored either red ...

  4. poj 3050 地图5位数问题 dfs算法

    题意:一个5*5地图上面,从任意位置上下左右跳五次,组成一个数.问:不重复的数有多少个? 思路:dfs 从任意位置跳5次,说明每个位置都需要遍历. 组成一个数:number*10+map[dx][dy ...

  5. poj 1321 排兵布阵问题 dfs算法

    题意:有不规则地图,在上面放n个相同的棋子,要求摆放的时候不同行不同列.问:有多少种摆法? 思路:dfs+回溯 用一个book[]数组来表示当前列是否有放棋子 一行一行的遍历,对一行来说遍历它的列,如 ...

  6. POJ 1979 Red and Black (简单dfs)

    题目: 简单dfs,没什么好说的 代码: #include <iostream> using namespace std; typedef long long ll; #define IN ...

  7. POJ 1979 Red and Black (DFS)

    Description There is a rectangular room, covered with square tiles. Each tile is colored either red ...

  8. poj 1979 Red and Black(dfs)

    题目链接:http://poj.org/problem?id=1979 思路分析:使用DFS解决,与迷宫问题相似:迷宫由于搜索方向只往左或右一个方向,往上或下一个方向,不会出现重复搜索: 在该问题中往 ...

  9. POJ 1979 Red and Black (红与黑)

    POJ 1979 Red and Black (红与黑) Time Limit: 1000MS    Memory Limit: 30000K Description 题目描述 There is a ...

随机推荐

  1. Magic Maze dfs + dp

    http://swjtuoj.cn/problem/2387/ 设dp[cur]表示以cur这个节点为起点的时候,能走的最大贡献. 题目保证没环,也就是没回路. 感觉和树dp差不多了. #includ ...

  2. HTTP1.1中CHUNKED编码解析(转载)

    HTTP1.1中CHUNKED编码解析 一般HTTP通信时,会使用Content-Length头信息性来通知用户代理(通常意义上是浏览器)服务器发送的文档内容长度,该头信息定义于HTTP1.0协议RF ...

  3. 滚动条插件mCustomScrollbar

    1. 参考网站 http://www.wufangbo.com/mcustomscrollbar/ 2. 使用方法

  4. windows下利用intellij idea等工具开发erlang

    今天突然想在家里去年新买的电脑上写点erlang代码,然后可耻的发现家里的电脑上竟然没有开发环境,果然是去年6月以后没写过erlang代码么╮(╯▽╰)╭?        首先下载需要用的几样东西:  ...

  5. 【Linux】Ubuntu配置zshell&oh-my-zsh

    zshell:https://archive.codeplex.com/?p=shell oh-my-zsh: https://github.com/robbyrussell/oh-my-zsh 终极 ...

  6. springboot集成shiro实现权限缓存和记住我

    到这节为止,我们已经实现了身份验证和权限验证.但是,如果我们登录之后多次访问http://localhost:8080/userInfo/userDel的话,会发现权限验证会每次都执行一次.这是有问题 ...

  7. ribbon hystrix仪表盘

    Circuit Breaker: Hystrix Dashboard (断路器:hystrix 仪表盘) 基于service-ribbon 改造下: pom.xml加入: <dependency ...

  8. 重写strcat函数,以实现strcat的功能

    char * strcatTest(char *dst,const char *src);Action(){ char a[]="come on"; char b[]=" ...

  9. 用dfs求解八皇后问题

    相信大家都已经很熟悉八皇后问题了,就是指:在8X8格的国际象棋上摆放八个皇后,使其不能互相攻击,即任意两个皇后都不能处于同一行.同一列或同一斜线上,问有多少种摆法.主要思路:按行进行深度优先搜索,在该 ...

  10. Django models多表操作

    title: Django models多表操作 tags: Django --- 多表操作 单独创建第三张表的情况 推荐使用的是使用values/value_list,selet_related的方 ...