DFS就是深度搜索算法。。。。感觉就像破案一样。。。。

#include<iostream>
#include<cstdio>
#include<cstring>
#define maxn 10
using namespace std; char map[maxn][maxn];
int mat[maxn][maxn];
int st_x, st_y;
int m, n, t;
int flag;
void dfs(int x, int y, int ti)
{
if(flag||ti > t) return;
else if(map[x][y] == 'D')
{
if(ti == t)
flag = 1;
return ;
}
else if(map[x][y] == '.' || map[x][y] == 'S')
{
mat[x][y] = 1;
if(x - 1 >= 1 && x - 1 <= m && y >= 1 && y <= n && !mat[x - 1][y]) dfs(x - 1, y, ti + 1);
if(x + 1 >= 1 && x + 1 <= m && y >= 1 && y <= n && !mat[x + 1][y]) dfs(x + 1, y, ti + 1);
if(x >= 1 && x <= m && y + 1 >= 1 && y + 1 <= n && !mat[x][y + 1]) dfs(x, y + 1, ti + 1);
if(x >= 1 && x <= m && y - 1 >= 1 && y - 1 <= n && !mat[x][y - 1]) dfs(x, y - 1, ti + 1);
mat[x][y] = 0;
}
} int main()
{
while(scanf("%d%d%d", &m, &n, &t) != EOF, m + n + t)
{
int i, j;
for(i = 1; i <= m; i ++)
{
for(j = 1; j <= n; j ++)
{
cin >> map[i][j];
if(map[i][j] == 'S')
{
st_x = i;
st_y = j;
}
}
}
flag = 0;
dfs(st_x, st_y, 0); if(flag) cout << "YES" << endl;
else cout << "NO" << endl; memset(map, 0, sizeof(map));
memset(mat, 0, sizeof(mat));
}
}

HDU1010第一道DFS的更多相关文章

  1. 一道dfs和dp结合的好题 --- Longest Run on a SnowboardUVA-10285

    题目链接: https://vjudge.net/problem/19213/origin 大致题意: 一个滑雪者想知道自己在固定高度的山坡中最多能滑的距离是多少. 思路: 首先想到的就是dfs,但是 ...

  2. HDU1010 DFS+剪枝

    Tempter of the Bone Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Othe ...

  3. ACM/ICPC 之 DFS范例(ZOJ2412-ZOJ1008)

    通过几道例题简单阐述一下DFS的相关题型 ZOJ2412-Farm Irrigation 直观的DFS题型,稍加变化,记录好四个方向上的通路就能够做出来 题目和接水管类似,问最少要灌溉几次,即求解最少 ...

  4. Codeforces 510B Fox And Two Dots 【DFS】

    好久好久,都没有写过搜索了,看了下最近在CF上有一道DFS水题 = = 数据量很小,爆搜一下也可以过 额外注意的就是防止往回搜索需要做一个判断. Source code: //#pragma comm ...

  5. Military Problem CodeForces 1006E (dfs序)

    J - Military Problem CodeForces - 1006E 就是一道dfs序的问题 给定一个树, 然后有q次询问. 每次给出u,k, 求以u为根的子树经过深搜的第k个儿子,如果一个 ...

  6. POJ 1321 - 棋盘问题 - [经典DFS]

    题目链接:http://poj.org/problem?id=1321 Time Limit: 1000MS Memory Limit: 10000K Description 在一个给定形状的棋盘(形 ...

  7. UVA 129困难的串【DFS】

    题目链接 题目大意: 给出n,l:要求按特定格式输出由前l个大写字母构成的按字母表排列的第n个没有连续重复子串的字符串以及该字符串长度. 此题是一道dfs递归回溯的基础题,难点在于对当前字符串是否有连 ...

  8. DFS——hdu1016Prime Ring Problem

    一.题目回顾 题目链接:Prime Ring Problem Problem Description A ring is compose of n circles as shown in diagra ...

  9. HDU 1241 Oil Deposits【DFS】

    解题思路:第一道DFS的题目--- 参看了紫书和网上的题解-- 在找到一块油田@的时候,往它的八个方向找,直到在能找到的范围内没有油田结束这次搜索 可以模拟一次DFS,比如说样例 在i=0,j=1时, ...

  10. 【DFS例题】等式

    题目如下: 这道题依然是一道dfs(要求输出方案数很明显用dfs呐) 首先一个模板贴上来: void dfs()//参数用来表示状态 { if(到达终点状态) { ...//根据题意添加 return ...

随机推荐

  1. Triton 源码初步研读

    一.核心接口形态 def jit( fn: Optional[T] = None, *, version=None, do_not_specialize: Optional[Iterable[int] ...

  2. ajax递归发送请求

    简介 大家都知道浏览器在处理http网络请求的时候,不同的浏览器会有不一样的并发限制,下表是一些主流浏览器对 HTTP 1.1 和 HTTP 1.0 的最大并发连接数目: Browser HTTP/1 ...

  3. toLua中Lua调用C#中的类

    toLua中Lua调用C#: [7]Lua脚本调用C#中的class 准备工作:打算在Lua脚本中使用Debug,使用lua调用C#脚本,需要绑定LuaState和自定义添加Debug --- --- ...

  4. 网络安全—IPSec安全策略

    文章目录 网络拓扑 添加策略 ESP 添加筛选器 添加筛选器的操作 另一台主机设置 AH 使用Windows Server 2003系统 网络拓扑 client1 IP = 192.168.17.10 ...

  5. 密码学—DES加密的IP置换Python程序

    文章目录 IP初始置换与逆置换 编程想法 转二进制过程中的提取一些数据 64为一组 IP置换 IP逆置换 DES发明人 美国IBM公司W. Tuchman 和 C. Meyer1971-1972年研制 ...

  6. jq 工具及其常用用法

    在处理 JSON 数据时,我们经常需要在命令行中进行过滤.查询和编辑的操作.jq 是一个强大的命令行 JSON 处理工具,它可以让我们轻松地对 JSON 数据进行各种操作.本文将简要介绍 jq 的基本 ...

  7. Istio(三):服务网格istio可观察性:Prometheus,Grafana,Zipkin,Kiali

    目录 一.模块概览 二.系统环境 三.可观察性 四.指标 4.1 代理级指标 4.2 服务级指标 4.3 控制平面度量 五.Prometheus 5.1 安装Prometheus 5.2 部署示例应用 ...

  8. 【asp.net】滑块验证码(分享一个从github上下载的源码)

    思路: 1. 准备好10张或20张不同规格的图片,按规格分类到不同文件夹,每个文件夹的图片从1开始顺序递增命名,为了随机选择图片.   2.前端提交规格比如200*300,根据规格选择原图,并初始化 ...

  9. 论GNU、Linux和GNU/Linux之间的关系

    相信很多人看到了这个标题就会产生疑问,这篇文章到底要讲什么东西?在回答这个问题之前,我先提出几个问题? 1. 什么是Linux? 2. 什么是GNU? 3. GNU/Linux是什么玩意儿? 在回答了 ...

  10. Jenkins 项目构建平台

    引言 Jenkins是一个开源的.提供友好操作界面的持续集成(CI)工具,主要用于持续.自动的构建/测试软件项目.监控外部任务的运行.Jenkins 用 Java 语言编写,可在 Tomcat 等流行 ...