DFS

关于dfs,我的理解就是深度搜索,找到所有与入口相连的路径,可以用于迷宫求出口,利用递归的思想,进行搜索返回所有值。
比如,给你两个值分别表示迷宫的长和宽,迷宫有一个入口,一个出口,判断能否从迷宫出来,入口用”s“表示,出口用“e“表示,墙壁用”#“表示,路用”.“表示
            输入:3  4
s...
.##.
#..e
4 4
s...
..##
#.##
###e
输出:You can gou out!
Trapped!
#include "pch.h"
#include <cstdio>
#include <cstring>
#include <queue>
#include<cstdio>
#include <algorithm>
#include <iostream>
#include <istream> using namespace std;
int n, m, si, sj, ei, ej;
char ditu[30][30];
int flag[30][30];
int s = 0;
void sou(int x, int y)
{
if (x < 0 || x >= n || y < 0 || y >= m || flag[x][y] == 1)
return;
if (x == ei && y == ej)
s = 1;
//把使用的地方标记为1,防止下次再用
flag[x][y] = 1;
//四个方向
sou(x + 1, y);
sou(x - 1, y);
sou(x, y + 1);
sou(x, y - 1);
}
int main()
{
int i, j;
while (cin >> n >> m)
{
getchar();
s = 0;
memset(flag, 0, sizeof(flag));//还原flag,flag用来标记墙壁并且标记使用过的地方
for (i = 0; i < n; i++)
{
for (j = 0; j < m; j++)
{
cin >> ditu[i][j];//输入地图
if (ditu[i][j] == 's')
{
si = i;
sj = j;
}
if (ditu[i][j] == 'e')
{
ei = i;
ej = j;
}
if (ditu[i][j] == '#')
flag[i][j] = 1;
}
getchar();
}
sou(si, sj);//查找
if (s == 0)
cout << "Trapped!" << endl;
else
cout << "You can go out!" << endl;
}
return 0;
}

关于dfs的更多相关文章

  1. BZOJ 3083: 遥远的国度 [树链剖分 DFS序 LCA]

    3083: 遥远的国度 Time Limit: 10 Sec  Memory Limit: 1280 MBSubmit: 3127  Solved: 795[Submit][Status][Discu ...

  2. BZOJ 1103: [POI2007]大都市meg [DFS序 树状数组]

    1103: [POI2007]大都市meg Time Limit: 10 Sec  Memory Limit: 162 MBSubmit: 2221  Solved: 1179[Submit][Sta ...

  3. BZOJ 4196: [Noi2015]软件包管理器 [树链剖分 DFS序]

    4196: [Noi2015]软件包管理器 Time Limit: 10 Sec  Memory Limit: 512 MBSubmit: 1352  Solved: 780[Submit][Stat ...

  4. 图的遍历(搜索)算法(深度优先算法DFS和广度优先算法BFS)

    图的遍历的定义: 从图的某个顶点出发访问遍图中所有顶点,且每个顶点仅被访问一次.(连通图与非连通图) 深度优先遍历(DFS): 1.访问指定的起始顶点: 2.若当前访问的顶点的邻接顶点有未被访问的,则 ...

  5. BZOJ 2434: [Noi2011]阿狸的打字机 [AC自动机 Fail树 树状数组 DFS序]

    2434: [Noi2011]阿狸的打字机 Time Limit: 10 Sec  Memory Limit: 256 MBSubmit: 2545  Solved: 1419[Submit][Sta ...

  6. POJ_2386 Lake Counting (dfs 错了一个负号找了一上午)

    来之不易的2017第一发ac http://poj.org/problem?id=2386 Lake Counting Time Limit: 1000MS   Memory Limit: 65536 ...

  7. 深度优先搜索(DFS)

    [算法入门] 郭志伟@SYSU:raphealguo(at)qq.com 2012/05/12 1.前言 深度优先搜索(缩写DFS)有点类似广度优先搜索,也是对一个连通图进行遍历的算法.它的思想是从一 ...

  8. 【BZOJ-3779】重组病毒 LinkCutTree + 线段树 + DFS序

    3779: 重组病毒 Time Limit: 20 Sec  Memory Limit: 512 MBSubmit: 224  Solved: 95[Submit][Status][Discuss] ...

  9. 【BZOJ-1146】网络管理Network DFS序 + 带修主席树

    1146: [CTSC2008]网络管理Network Time Limit: 50 Sec  Memory Limit: 162 MBSubmit: 3495  Solved: 1032[Submi ...

  10. 【Codeforces163E】e-Government AC自动机fail树 + DFS序 + 树状数组

    E. e-Government time limit per test:1 second memory limit per test:256 megabytes input:standard inpu ...

随机推荐

  1. php分页数据最后一页继续追加第一页数据

    之前做数据分页遇到这样一个需求,就是数据到最后一页的时候不能中断,继续把第一页的数据追加到后面,无限显示下去. 原文地址:代码汇个人博客 http://www.codehui.net/info/23. ...

  2. 「插件」Runner更新Pro版,帮助设计师远离996

    三年多前Runner团队在德国汉堡的骇客松上第一次发布了Sketch插件Runner的beta版本.从那以后,这个团队的目标一直很清晰: 创造一个加速设计工作流的工具. 他们只给Runner添加真正能 ...

  3. keil 中报错和警告提示解决办法

    1.warning: #1-D: last line of file ends without a newline 解决办法:在文件最后一行加入一个回车. 2.error: #134: expecte ...

  4. python icmp\dns\http监控网络各个节点状态,并记录日志

    配置文件如下:支持多节点: { "dns":[{"domainname":"www.baidu.com","dnsserver&q ...

  5. PHP为前端CSS和JS增加时间戳版本号

    一.PHP代码如下: function addVersion($url){ $version = date("Y-m-d H:i:s",filemtime($_SERVER['DO ...

  6. [Alpha阶段]第七次Scrum Meeting

    Scrum Meeting博客目录 [Alpha阶段]第七次Scrum Meeting 基本信息 名称 时间 地点 时长 第七次Scrum Meeting 19/04/11 大运村寝室6楼 35min ...

  7. SpringMVC 框架介绍以及环境搭建

    目录 前端设计模式介绍 分析前端设计模式 Spring MVC简单介绍 Spring和Spring MVC的关系 配置Spring MVC的环境并简单测试 前端设计模式介绍 前端设计模式其实和前端没啥 ...

  8. arale-cookie 使用

    https://www.npmjs.com/package/arale-cookie  arale-cookie 使用 define(function() { var Cookie = require ...

  9. 使用FindBugs寻找bug,代码分析

    安装就不说了,网上很多. 一些常见的错误信息 Bad practice 代码中的一些坏习惯 Class names should start with an upper case letter 主要包 ...

  10. 【CSS】利用宽高比例的媒体查询

    aspec-ratio 取值:value (x/y) 接收min/max前缀:是 aspect-ratio描述了输出设备目标显示区域的宽高比.该值包含两个以/分隔的正整数.代表了水平像素数(第一个值) ...