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

相关推荐

2022年全球市场微波等离子体CVD反应器总体规模、主要生产商、主要地区、产品和应用细分研究报告

据GIR (Global Info Research)调研,按收入计,2021年全球微波等离子体CVD反应器收入大约 百万美元,预计2028年达到 百万美元,2022至2028期间,年复合增长率CAGR为 %。

MARKETRESEARCH的博客 1137

HDU 1010 DFS+奇偶剪枝

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

weixin_30838921的博客 185

使用.NET 免费开源包ViewFaceCore做一个人脸识别并注册的功能,没有比我更全的

本文介绍了一个基于WinForm的免费人脸识别系统实现方案。系统使用AForge和ViewFaceCore库,支持从USB或电脑自带摄像头采集图像,具备人脸注册和快速识别功能。硬件方面仅需普通摄像头,软件依赖多个NuGet包(如AForge.Video、ViewFaceCore等)。界面包含视频显示、图像预览和功能按钮控件,后台采用SQLServer存储用户面部特征数据。核心代码展示了人脸检测、特征提取和多线程处理逻辑,通过ViewFaceCore实现高效识别。系统具有识别速度快、准确率高的特点,适合Win

一个靠“吃代码”长大的程序猿,专治各种“Bug 饥饿症”。 817

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

土壤水动力学_前 言

Van Genuchten (V-G) 模型是土壤水分特征曲线中最常用的模型之一。它通过数学方程描述了土壤基质吸力与体积含水量之间的关系,被广泛应用于土壤水分运移、土壤盐渍化、边坡稳定性等研究领域。V-G模型是描述土壤水分特征曲线的重要工具,但它并不是完美的。在实际应用中,需要根据土壤类型、试验条件等因素选择合适的模型。土壤基质吸力是土壤水分学中的一个重要概念,它对土壤水分的保持、植物的生长以及土壤的工程性质都有重要影响。

weixin_44259522的博客 5327

告别手动复制粘贴!用Python脚本+pywinauto实现PC微信消息自动发送(附完整源码)

本文详细介绍了如何利用Python和pywinauto实现PC微信消息的自动化发送,告别繁琐的手动操作。从环境搭建、UI控件定位到构建健壮的发送流程,再到高级功能扩展和项目打包部署,全面解析了自动化办公的实现方案,显著提升工作效率。

weixin_30315723的博客 584

hdu1010(dfs + 奇偶性剪枝)

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

weixin_45925735的博客 429

EtherCat 从站开发中遇到的问题分享

EtherCat从站 AX58100

yu_arius的博客 2058

HDU1010(Tempter of the Bone)深搜

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

colorsunlight的专栏 1282

黑猫带你学eMMC协议第22篇:emmc可靠写详解(Write Reliability)

1 前言 1.1 声明 本文依据eMMC JEDEC5.1、网络资料及个人工作经验整理而成,如有部分错误请留言。 本文部分内容可能源自网络,侵删。 本文结合eMMC JEDEC5.1协议手册查看效果更佳。 1.2 内容提要 1、什么是可靠性写属性(Write Reliability)? 2、可靠写和普通的写有什么区别? 3、设置可靠写的流程及流程框图。 4、可靠写需要遵循哪些规则? 1.3 参考链接 本文主要参考链接:http://www.up48.com/cn/support/8_37.html 2 什么

黑猫奥利奥的博客 3122

MIKE21 MIKE软件 教程 0.1 软件介绍与教学目录

MIKE 21是一个专业的工程软件包,用于模拟河流、湖泊、河口、海湾、海岸及海洋的水流、波浪、泥沙及环境问题。在MIKE Zero集成平台中,主要有MIKE11,MIKE21,MIKE3三类软件,分别对应一维,二维,三维的水动力模型模拟。同时还包括MIKE HYDRO,MIKE FLOOD等其他功能,各软件的具体介绍请参考DHI公司的官方文档,在此不作赘述。学习过程中,对于任何操作界面的疑问,建议大家仔细阅读帮助文档(在有疑问的界面按F1调出),同时官方也提供了对应的线上和线下教学服务(免费+收费)。

Hello Word 2万+

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

使用lightGBM进行数据建模及预测

在机器学习领域中,数据建模和预测一直是非常重要的任务。而lightGBM作为一种基于梯度提升算法的高效机器学习框架,被广泛应用于数据建模和预测中。本文将介绍如何使用lightGBM进行数据建模和预测。到此,我们已经成功使用lightGBM对数据进行了建模和预测。使用lightGBM可以快速、高效地完成数据建模和预测任务,是机器学习领域中不可或缺的工具之一。使用lightGBM进行数据建模及预测。

qq_37934722的博客 1016

hdu1010

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

奋斗的Die Young 618

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

hdu1010(dfs剪枝)

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

weixin_44735312的博客 346

WINCC7.3破解文件

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

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

余额充值