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 阅读详情

相关推荐

银河麒麟V10新特性解析:从安装到AI应用的全面指南

本文全面解析银河麒麟V10操作系统的新特性,从安装指南到AI应用开发,详细介绍了其智能调度引擎、神经网络加速和场景化AI工具集等核心功能。通过实战案例展示如何高效配置AI环境、优化性能,并解决常见问题,助力开发者在国产操作系统上实现高效AI开发与应用部署。

seed的博客 301

HDU 1010 DFS+奇偶剪枝

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

weixin_30838921的博客 185

Aspice的理解

ASPICE 是由汽车行业的主要公司和组织合作开发的,包括德国汽车工业联合会(VDA)和国际汽车工作组(Automotive SIG)。其目标是通过标准化的软件开发流程,提高汽车电子系统的软件质量和可靠性。

hkj8808的博客 2015

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

CoaXPress协议入门(1)---- CXP测试套件

CoaXPress (简称CXP)是指一种采用同轴线缆进行互联的相机数据传输标准,主要用于替代之前的Camera Link协议,常见于科学相机、工业相机、医学图像、航空防务等场景。CXP是一个非对称的高速点对点串行传输协议,主要用于传输视频和静态图像,线缆多使用单条或多条同轴电缆。CXP易于集成,可以获得灵活可靠的性能,通过使用标准的同轴线缆,比如RG59 和 RG6规格(推荐使用RG6),并且图像、控制通讯、触发、电源都可以使用同一条线缆。

素手挽剑 9512

残差检验_第三十讲 R语言-Cox比例风险模型的假设检验条件

在介绍完 Cox比例风险模型的详细理论和R实现以后(插入链接!!!),我们已经知道Cox比例风险模型可以较好的同时矫正多个混杂因素对结果的影响,同时我们遗留下来了一个问题:Cox比例风险模型的假设检验条件是什么?这一讲,我们将对此进行解答。请注意,如果使用不当,统计模型可能会产生误导性的结论。因此,检查给定的模型是否适合数据类型是非常重要的!1. Cox比例风险模型的假设条件Cox比例风险模型的成...

weixin_35476698的博客 8047

hdu1010(dfs + 奇偶性剪枝)

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

weixin_45925735的博客 429

实战|验证码突破思路

漏洞成因:由于逻辑设计缺陷,可绕过验证,比如直接删除COOKIE或验证码参数可绕过、当验证不通过清空session时,验证码参数值为空时绕过等。测试方法:抓包,删除验证码字段,查看是否可以成功发送抓包,正常流程下,记录验证码后的数据包,替换目标包中内容,直接发送,查看是否可以直接绕过验证码案例:Step1.输入正确账户信息和错误验证码,登录时抓包Step2.删除COOKIEStep3.客户端登陆成功。

weixin_46239998的博客 8100

HDU1010(Tempter of the Bone)深搜

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

colorsunlight的专栏 1282

一体化伺服电机与施耐德PLC TM241CEC24T在Canopen协议下的应用

一.硬件组成 软件组成:施耐德SoMachineV4.3二.○1.打开SoMachineV4.3,点击“新建项目”○2.点击“空白项目”○3.项目命名○4.点击“创建项目” 三. 点击“Logic Builder” 四. ○1.右击项目”PMM_CANOPEN_ST”添加设备○2.点击”LogicController”选择PLC型号TM241CEC24T/U○3.点击“添加设备” 五. ○1.右击CAN_1,添加设备○2.选择“CANopen Perfomance”○3.点击“添加设备”

m0_46512607的博客 2520

【NVIDIA GR00T N1 从入门到精通】第1章 环境搭建与基础配置 第2章 数据准备与格式转换

针对新型机器人形态的适配,需完成从硬件接口到数据模式的完整配置流程。创建modality_config.py文件自定义形态配置通过继承基类实现。配置类需实例化以下组件:状态模态定义(观测空间)、动作模态定义(动作空间)、相机模态定义(视觉输入)、可选的标注模态定义(语言指令或成功判定)。每个模态配置指定数据类型、形状、归一化统计量以及时序采样策略。状态模态配置状态配置的核心参数包括与。定义策略观测的历史时域窗口,对于高动态操作(如投掷、击打),需扩展历史窗口以捕捉运动趋势;

VectorShift的博客 95

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

揭秘AI人工智能中Stable Diffusion的模型微调技巧

Stable Diffusion作为一种强大的文本到图像生成模型,在艺术创作、设计、娱乐等多个领域展现出了巨大的应用潜力。然而,其默认的模型输出可能无法满足特定用户或特定场景的个性化需求。本文章的目的在于深入揭秘Stable Diffusion的模型微调技巧,让读者能够根据自己的需求对模型进行定制化调整,生成符合特定风格、主题或要求的图像。范围涵盖了从基础概念到实际操作,从理论原理到项目实战的全方位内容,旨在为读者提供一个系统且深入的学习指南。

大模型应用工坊 948

hdu1010

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

奋斗的Die Young 618

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

hdu1010(dfs剪枝)

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

weixin_44735312的博客 346

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

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、付费专栏及课程。

余额充值