(づ ̄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. mysql细说show slave status参数详解(最全)

    1. Slave_IO_State 这里显示了当前slave I/O线程的状态(slave连接到master的状态).状态信息和使用show processlist | grep "syst ...

  2. 换个眼界看IE,它真的有那么可恶吗?

    一说到IE我想很多web小伙伴都避之不及,对于IE经验不足的同学可以说更是恨之入骨,撕心裂肺般的烦恼与气愤?,被折磨的不要不要的.我感同身受,去年的我的生日愿望就是,我希望IE浏览器在这世界上没有一个 ...

  3. CAP 与 注册中心

    https://blog.csdn.net/fly910905/article/details/100023415 http://www.ruanyifeng.com/blog/2018/07/cap ...

  4. idea无法创建javaclass文件

    一直用pycharm和jupyter. 今天发现打开IDEA 创建一个新的java项目(maven)后无法在里面的module中创建相应的java class文件 解决方案: (1)选择 File—— ...

  5. shell脚本日志指南(1)

    1.初始化日志文件.对文件的大小进行判断和压缩 LOG=$ if [ -e "${LOG}" ];then LOG_SIZE=`ls -l "${LOG}"| ...

  6. php核心:代际划分/运行环境等

    不想在python一棵树上吊死,不是所有Python就一定得会人工智能大数据,so...... 何谓php?早期:personel homepage 是也!后期Hypertext preprocess ...

  7. C#创建泛型类T的实例的三种方法

    原文链接:https://www.cnblogs.com/lxhbky/p/6020612.html 方法一,通过外部方法传入的实例来实例化: //泛型类: public class MySQLHel ...

  8. electron-vue 升级 从2.x升级到4.x的坑

    子窗口 2.x modal为true let messageRightMenu = new BrowserWindow({ // height: 170, // width: 70, useConte ...

  9. zrender-部分小知识点集合

    1.存组件元素和取组件元素,会在数据更新时,将存起来的拿出来 在construct(){ this.saveData=[];//先声明一个空的数组 } //存的方法 setSave(ele,i,nam ...

  10. Release和Debug的区别

    Debug与Release版本的区别 Debug 和 Release 并没有本质的区别,他们只是VC预定义提供的两组编译选项的集合,编译器只是按照预定的选项行动.如果我们愿意,我们完全可以把Debug ...