hdu 1010

HDU1010(DFS+奇偶剪枝) #include<iostream> #include<cstdio> #include<cstring> #include<algorithm> using namespace std; int n,m,t,a,b,c,d; char map[10][10]; bool vis[10][10]; int dir[10][10] = {{0,1},{0,-1},{-1,0},{1,0}}; bool flag; void dfs(int x,int y,i. 阅读详情

题意:输入一个n*m的迷宫,和一个T:可以在迷宫中生存的最大时间。S为起点,D为终点。并且,每个格子只能踩一次,且只能维持一秒,然后该块地板就会塌陷。所以你必须每秒走一步,且到D点时,所用时间为T。用深搜。

之前,误以为就是找到最短路,结果不是,而是要看是否能在所有可能的路中找到刚好满足条件的路程,后来,单用深搜,超时,所以,后来的剪枝非常重要!!!

#include<iostream>
using namespace std;
int sx,sy,ex,ey;
int n,m;
char map[10][10];  
int flag,step;
int d[4][2]={0,1,1,0,0,-1,-1,0};
void dfs(int x,int y,int t)
{ 
    if(flag==1) return ;                                           //若找到所需解,则不用再找其余路径 
    if(t<abs(ex-x)+abs(ey-y)||(t-abs(ex-x)+abs(ey-y))%2) return ;  //剪枝。若剩余时间-当前点到终点的横纵坐标之和,为偶数
                                                                   //则,该路,可走。(若无障碍,差值为0,若有障碍则绕道
                                                                   //即差值-1+(n*2+3)为偶数)                                                               
    else if(t==0)                //t代表剩余时间,每走一步t--,这里若t=0,则迷宫坍塌 
    {
         if(x==ex&&y==ey)  {flag=1; return ;}    //若此时,t=0且刚好到达终点,则标记找到所需解。 
         else { return ;  }  
    }   
    else
    for(int i=0;i<4;i++)                  //每次向4个方向探。 
    {
            int nx=x+d[i][0],ny=y+d[i][1];
            if (nx>0&&nx<=n&&ny>0&&ny<=m&&(map[nx][ny]=='.'||map[nx][ny]=='D')) //若该点不为墙,则为可走 
            {
                   map[nx][ny]='X';                    //标记走过 
                   dfs( nx,ny,t-1) ;
                   map[nx][ny]='.';                   //回溯 
            }
          
    }
    return ;
}
int main()
{


    char str[10];  
    int t;
    while (scanf("%d%d%d",&n,&m,&t)!=EOF)
    {   
          if(n==0&&m==0&&t==0) return 0;
          for (int i=1;i<=n;i++)
          {
              scanf("%s",str);
              for (int j=1;j<=m;j++)
              {
                  map[i][j]=str[j-1];   
                  if(map[i][j]=='S')  sx=i,sy=j;
                  else if(map[i][j]=='D') ex=i,ey=j;
              }
          }         
          flag=0;
          dfs(sx,sy,t);
          if(flag==0) printf("NO\n");
          else printf("YES\n"); 
    }
    return 0;
}
HDU1010迷宫问题 Tempter of the Bone Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 55970    Accepted Submission(s): 15112 Problem Description The 阅读详情

相关推荐

从零到一:手把手教你用C# WinForms搭建工控上位机(含Panel控件布局与事件处理详解)

本文详细介绍了如何使用C# WinForms框架从零开始搭建工控上位机系统,重点讲解了Panel控件的布局技巧和事件处理机制。通过实战案例,帮助开发者掌握界面分区规划、动态窗体切换及数据通信等核心功能,适用于工业自动化监控系统的开发。

weixin_30321709的博客 609

HDU 1010 DFS+奇偶剪枝

Tempter of the Bone 做DFS(或其他搜索题),我感觉最有趣的地方不是DFS本身而是——“剪枝”。剪枝,顾名思义就是剪去不必要的枝节,也就是避免不必要的搜索过程。有点类似于工程领域的“去噪”,当然这是个人感觉而已。。 HDU 1010这道题是一个典型的迷宫搜索题。给你出口入口,但是你并不是能找到出口就完事了。注意事项: 必须在给定的时间 t 的时候找到。不能...

weixin_30838921的博客 185

SAP S/4HANA 中 RAP 业务对象接口的消费模式

本文探讨了SAP S/4HANA中RAP业务对象接口的消费模式,重点介绍了通过EML直接调用和CDS投影两种Clean Core开发路径。文章分析了BO Interface作为稳定契约的价值,并提供了BAdI集成、OData服务发布等实际场景案例,同时对比了OData V2/V4的技术选型考量,最后强调了ADT向导使用中的DCL权限注意事项。全文旨在帮助开发者构建升级友好的业务对象消费方案。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 757

HDU.1010 Tempter of the Bone

文章目录一、题目解读1、原题2、分类3、题意4、输入输出格式5、数据范围二、题解参考1、总体思路2、思路①(1).分析(2).AC代码三、评价与后话1、评价2、奇偶剪枝0-1示图绘制代码(C++——EasyX)3、后话 一、题目解读 1、原题 HDU.1010 Tempter of the Bone 2、分类 回溯法 3、题意 给定一个N×MN \times MN×M的迷宫让一只狗去走,迷宫中有一...

God-Excious的博客 808

华为OD机考双机位C卷 - 敌情监控 (Java & Python& JS & C/C++ & GO )

华为OD机考双机位C卷 - 敌情监控 (OD上机考试双机位C卷)。提供在线OJ刷题。Java、C++、Python、GO语言、C语言、JavaScript题解,并提供完整思路讲解。

算法大师! 964

二、TCP/IP协议之网络层(IP地址的格式、分类、报文格式)

数据报每经过一个路由器,路由器都要重新计算一下首部检验和,若首部未发生变化,则此结果必为 0,于是就保留这个数据报。对于网络号相的设备,无论实际所处的物理位置如何,它们都是处在同一个网络中。在首部的固定部分的后面是一些可选字段,其长度是可变的。IPv4 软件在存储器中维持一个计数器,每产生一个数据报,计数器就加 1,并将此值赋给标识字段。表示数据报在网络中的寿命,英文缩写是 TTL(Time To Live),功能是“跳数限制”。地址的网络号码字段用来标识一个网络,网络号码字段的前几位用来区分。

锦慈的技术博客 185

hdu1010(dfs + 奇偶性剪枝)

奇偶性剪枝是一种可行性剪枝,使得搜索的速度大幅度加快。 (注意:这道题目没有来回走的情况,考虑来回走的情况能不能用搜索写) 假设两个点的曼哈顿距离(abs(x1 - x2) + abs(y1 - y2))为dis。 我们可以找到一个规律:不管我们怎么走,从这个点走到另外一个点的步数为X,那么一定有X - dis = 偶数。 所以如果X - dis为奇数的话,就说明就算不管继续往下怎么走,都不可能走到。 假设我们现在还能走T步的话,只需要判断T - dis是否是偶数就可以,如果是奇数,就肯定走不到,可以直接r

weixin_45925735的博客 429

深入URP之Shader篇5: SimpleLit Shader分析(1)

本篇开始分析simple lit shader。我们通过分析unlit shader了解了URP shader的结构,以及一些基础功能。而simple lit shader包含了更多的内容。本篇开始,就不会特别仔细的逐行去分析shader文件了,只会针对pass的功能中比较有意思且之前没看到过的内容进行分析。名字为的pass,它的Tags为: 根据URP的文档:说明这是一个前向渲染路径的pass,虽然URP(至少是10.8.1版本)还没有正式支持Deferred Rendering,但URP已经为它打了很多

聚焦游戏和图形引擎开发技术 1901

HDU1010(Tempter of the Bone)深搜

HDU1010 Tempter of the Bone 广搜每走 思路:简单的深搜,如果map[nextx][nexty]!='X',则以该最后点为当前节点继续搜,若继续搜没有路可走,则释放当前节点(即原来标记过,恢复为未标记,以便再以其他节点搜索时经过该点),回到上一节点,return.由于step是局部变量,其生命周期随着当前层的DFS()函数结束而结束,所以返回上一层时,step的值就是

colorsunlight的专栏 1282

Arcgis模型构建器01——写一个简单的模型

在使用模型构建器解决这个需求之前,我们要想清楚如果我们手动解决的话,应该如何去处理,因为构建模型的过程正是基于我们手动处理的过程来构建的。我有一个全国的dem影像数据和一个陕西省边界范围矢量,现在我想获取陕西省的dem影像的坡度数据。填写完之后点击确定,我们发现,两个输入数据和工具连接起来了,并且通过裁剪工具得到一个中间结果,即。我们发现工具框和中间数据框都存在阴影,说明已经运行过了这个模型,不报错就说明模型运行成功!现在我们就把数据和工具都串联起来了,成功构建好了模型。

爱吃雪糕的小布丁的博客 918

lammps案例:reaxff势模拟Fe(OH)3高温反应过程

所有的reaxff模拟,如:氧化、腐蚀、热裂解、燃烧等模拟,均可采用此模拟框架,只需要更换data文件、势文件,代码中的control文件可以不写,电荷平衡文件也可以用reaxff替换。该案例主要模拟Fe(OH)3在高温下的反应过程,主要代码来自lammps自带的案例。lammps自带案例没有产物输出,故在此基础上稍加修改,增加了产物输出命令。如果需要系统学习反应势的模拟,可考虑报名培训课程。本文分享一个reaxff反应势的案例。in文件代码已经注释,以供参考。大家好,我是小马老师。

lammps_jiayou的博客 1965

HDU1010

题目链接:HDU1010 一道DFS题目,程序种有两点需要注意: 1.快速读入数据 2.剪枝加速判断 代码: #pragma GCC optimize(2) #pragma GCC optimize(3) #include<stdio.h> #include<stdlib.h> #include<iostream> #include<iomanip> #include<cmath> #include<algorithm> #includ

wwww190的博客 275

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

hdu1010

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1010 先说下这个题的坑:       1)要求是正好的时间到达,因为这个坑了很多次WA。。       2)减枝。一个是算最短路径都大于给定时间的,一个是奇偶性的问题,比如(0,0)点到了(1,1)要走偶数步,而到(0,1)要走奇数步,判断一下题目给的时间是否符合,还有一个是dfs写的时

奋斗的Die Young 618

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

hdu1010(dfs剪枝)

培训acm时刷的题,最近复习下。 题目链接http://acm.hdu.edu.cn/showproblem.php?pid=1010` 基础的dfs加剪枝,但是因为没有处理换行符,wa了好多次,我恨。 具体如下图,当用二重循环一个个输入char型一定要注意换行符,为啥我这里说了“当用二重循环一个个输入char型”这个限定条件,详情可见我往期博客https://blog.youkuaiyun.com/weix...

weixin_44735312的博客 346

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

hdu_1010 Tempter of the Bone

原题链接:http://acm.hdu.edu.cn/showproblem.php?pid=1010 分析:题意即为再规定的时间内从开始点走在结束点。

徵羽調_xiao賤的专栏 882

HDU1010奇偶剪枝

HDU1010奇偶剪枝 Tempter of the Bone Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 165492 Accepted Submission(s): 43863 Problem Description The...

qq_43813140的博客 401

hdu1010题解

传送门:http://acm.hdu.edu.cn/showproblem.php?pid=1010 先枚举总步数,即开门周期的倍数,T,2*T,3*T,....iT 如下代码: for(int i = T;i然后进入dfs后各种剪枝: if(ok)return; if(u == en && num == iT){ok = 1;return;}///到达 if(num > iT)retur

leader880022的专栏 595

HDU 1010 Tempter of the Bone

题目:HDU 1010 Tempter of the Bone 题目大意:给定N, M, T, 问是否可以从S开始刚好走T步到达D(门). 题解: 很显然DFS搜索一条满足条件的路,不过要注意的是搜索过程中的剪枝,不然就TLE 这题涉及到的剪枝为奇偶剪枝 #include #include #include #include #include #include #include #inc

WinForBest 440

hdu1010(深搜 剪枝 回溯)

这个题目我做的时候不是超时就是错误,自己是新手也一直不知道再怎么剪下去 就参考了网上一大牛blog代码如下 #include #include #include //hdu1010 深搜优化剪枝 int m,n,t; char map[8][8]; int d[4][2]={{-1,0},{1,0},{0,-1},{0,1}}; int ex,ey,sx,sy,ok; void dfs(in

intial_Dream的博客 615

hdu1010 Tempter of the Bone

hdu 1010 这是一道剪枝的好题;开始时是朴素的当时间t > T || (t >= T&&g[][] != 'D')时,就return;但是还是TLE;之后看了题解说还要加一个奇偶剪枝,就是对每个坐标;将该点坐标的横坐标和纵坐标加起来奇偶性,这样就是斜对角的划分了;很容易知道之后如果S和D的奇偶性不同,还和t的奇偶性对不上就直接output了;但是有个疑问就是问什么一个看似 作用不大的"

hxer 432

hdu 1010——tempter of the bone题解

​ 那么如何得知S、D的0,1情况呢,就看f(曼哈顿距离)的奇偶性,如果f为奇数,说明S、D一个为1,一个为0,如果f为偶数,说明S、D全为1或全为0。​ 从题目中我们可以发现可行性剪枝的方法:一共走T步,现在走了K步,还要走X步,这时候要判断是否还可以走X步。​ (2)S、D一个为1一个为0时,当T为奇数时,可能有解,当T为偶数时,一定无解。出发,每步走一块地板,在每块地板不能停留,而且走过的地板都不能再走。​ (1)S、D同0或同1,当T为偶数时,可能有解,当T为奇数时,一定无解。

m0_74375748的博客 319

hdu 1010 Tempter of the Bone[dfs]

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1010

835

hdu-1010 Tempter of the Bone

http://acm.hdu.edu.cn/showproblem.php?pid=1010 题意:在n*m的地图上,标记为S的为狗狗的起点,D为门,问能否恰好以给定t的时间到达D,能就输出YES,否则NO,每个点只能走一次。 思路:dfs问题,找到一条长度恰好为t的路径,不一定是最短路路径,所以不能单纯用bfs。 但是  一般dfs会超时,所以要剪枝,这里主要用到奇偶性剪枝,参考链接:

有一种力量叫乐观 667

HDU1010——Tempter of the Bone

http://acm.hdu.edu.cn/showproblem.php?pid=1010 这道题讲的是起点是S要到达D点是否可以恰好在规定的T时间到达,而且走的路径不能返回。 解题思路:用的是深搜,搜索是否在T时间是正好到达D点 剪枝:奇偶剪枝,访问范围不能超过图的范围,访问过了或者遇到X都是不能继续访问了。 难点:状态改变有坐标和时间,以时间为判断结束标识。 #inc...

aozhe0658的博客 139
上一篇: poj 1376 Robot
下一篇: hdu 1026 Ignatius and the Princess I 打小怪兽
LiWen_7
博客等级 码龄15年 92粉丝 91原创
评论 7
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值