(づ ̄3 ̄)づ╭❤~(题面哦~~)

当初做的时候也借鉴了一些题解,发现确实有很多人都是在n和m上分不清。。

好吧,我也没分清。。

然后就一直不停错,还找不出来原因。。

最后狠心把所有判断dfs停止的条件单独列出来,终于找到了问题。。。

具体解释看代码:::

 #include<iostream>
using namespace std;
int n,m,ans=;//ans的值要赋大一点
int a[][],b[][];//第一个读入,第二个判断有没有走过
void dfs(int x,int y,int an,int hp){
if(hp==||y>m||x>n||x<=||y<=||a[x][y]==||b[x][y]==||an>ans)return;//判停条件,越界,不是最优解,没有生命值了,有障碍之类的,一定要注意区分n和m,我之前就一直写的是y>n,然后不停70分。
if(a[x][y]==){//如果到终点的情况
ans=min(ans,an);//其实有上面的判断,也可以直接写ans=an,也不会有错
return;//返回
}
if(a[x][y]==)hp=;//泉水。。
b[x][y]=;//标记走过了
dfs(x+,y,an+,hp-);//往上走
dfs(x,y+,an+,hp-);//往右走
dfs(x-,y,an+,hp-);//往下走
dfs(x,y-,an+,hp-);//往左走
b[x][y]=;//之前标记的,现在去掉
}
int main(){
int p,q;
cin>>n>>m;//读入
for(int i=;i<=n;i++){
for(int j=;j<=m;j++){
cin>>a[i][j];//读入,考场上建议用scanf,比较快
if(a[i][j]==)p=i,q=j;//一定要标记起点,不然会错,具体几个点不是很清楚。。。
}
}
dfs(p,q,,);//调用函数
if(ans==)cout<<-<<endl;//如果ans值没变,就说明不能到终点,输出-1
else cout<<ans<<endl;//否则输出步数
return ;}

祝大家编程愉快哦~~~

新人开博鼓励一下吧~~~

P2802 【回家】的更多相关文章

  1. 洛谷 P2802 回家

    题目链接 https://www.luogu.org/problemnew/show/P2802 题目描述 小H在一个划分成了n*m个方格的长方形封锁线上. 每次他能向上下左右四个方向移动一格(当然小 ...

  2. 洛谷—— P2802 回家

    P2802 回家 题目描述 小H在一个划分成了n*m个方格的长方形封锁线上. 每次他能向上下左右四个方向移动一格(当然小H不可以静止不动), 但不能离开封锁线,否则就被打死了. 刚开始时他有满血6点, ...

  3. Java实现洛谷 P2802 回家

    P2802 回家 时间限制 1.00s 内存限制 125.00MB 题目描述 小H在一个划分成了n*m个方格的长方形封锁线上. 每次他能向上下左右四个方向移动一格(当然小H不可以静止不动), 但不能离 ...

  4. Luogu P2802 回家

    题目描述 小H在一个划分成了n*m个方格的长方形封锁线上. 每次他能向上下左右四个方向移动一格(当然小H不可以静止不动), 但不能离开封锁线,否则就被打死了. 刚开始时他有满血6点,每移动一格他要消耗 ...

  5. P2802 回家 (DFS+剪枝)

    这里详细讲一下剪枝的点: 因为,可以重复在同一个点上走动.所以,这个步数是无穷的. 剪枝一:步数< n*m;    (因为起点不算所以不取等号) 剪枝二:步数当大于已有的答案时,直接退出DFS, ...

  6. 洛谷P2802 回家

    贱呼呼的搜索题 这个最贱的还是在于路途的标记,大部分的题目路途的标记是直接标记即可也就是说我走过了这个点,那么这个点标记上以后不再走,这个题不是,我走过了,但是我可能回了血我又继续走 所以说我们标记的 ...

  7. 洛谷 题解 P2802 【回家】

    思路:DFS+剪枝 本题可以用一个字符二维数组来存整个地图,然后在往四个方向进行搜索.注意:当走到家门前要先判断血量!(本人就被坑了) 代码: #include<bits/stdc++.h> ...

  8. flhs笔试题-回家上机实践

    这是最近参加的一个公司的笔试题,回家上机写了下代码,希望对有需要的小伙伴有用,简单实现字符串和数组在指定位置的插入: package org.flhs; import com.google.commo ...

  9. 三石推荐!把 Bootstrap 小清新带回家!

    无敌传送门:http://fineui.com/demo_pro/default.aspx?theme=bootstrap1&menu=accordion   喜欢就来赞一个! 把麻烦留给三石 ...

随机推荐

  1. SQL Server判断表中某字段是否存在【转】

    --比如说要判断表A中的字段C是否存在两个方法: 一, IF EXISTS ( FROM SYSOBJECTS T1 INNER JOIN SYSCOLUMNS T2 ON T1.ID=T2.ID W ...

  2. ython CGI编程Ⅱ

    HTTP头部 hello.py文件内容中的" Content-type:text/html"即为HTTP头部的https://www.xuanhe.net/一部分,它会发送给浏览器 ...

  3. Python 文件I/OⅡ

    File对象的属性 一个文件被打开后,你有一个file对象,你可以得到有关该文件的各种信息. 以下是和file对象相关的所有属性的列表: 如下实例: 以上实例输出结果: close()方法 File ...

  4. vue 中监听窗口发生变化,触发监听事件, window.onresize && window.addEventListener('resize',fn) ,window.onresize无效的处理方式

    // 开始这样写,不执行 window.onresize = function() { console.log('窗口发生变化') } // 改成window监听事件 window.addEventL ...

  5. 接口headers

    接口headers from-data header: { 'Content-Type':'application/json'},     header: { 'Content-Type':'appl ...

  6. java8中规范的四大函数式接口

    java8中规范的四大函数式接口: 1.Consumer<T>   :消费型接口    void accept(T t); 2.Supplier<T>      :供给型接口  ...

  7. luogu 3241 [HNOI2015]开店 动态点分治+二分+vector

    独立写出来+想出来的,1.5h就切了~ 建立点分树,然后用 $vector$ 暴力存所有子节点,然后二分一下子就可以了. #include <cstdio> #include <ve ...

  8. BruteXSS

    0X01安装 我是按照下面这位大牛的博客来的 https://www.cnblogs.com/Pitcoft/p/6341322.html 0X02使用BruteXSS的使用 #在目录 BruteXS ...

  9. c#使用SharpZipLib对二进制数据进行压缩和解压

    首先需要下载SharpZipLib,下载地址:http://icsharpcode.github.io/SharpZipLib/ 需要引入命名空间: using ICSharpCode.SharpZi ...

  10. better-scroll 滑动插件的使用

    better-scroll 滑动插件的使用 拥有的效果:下拉刷新.上拉加载.滑动.轮播