https://vjudge.net/problem/%E8%AE%A1%E8%92%9C%E5%AE%A2-T1212

AC代码

DFS剪枝

#include<iostream>
#include<algorithm>
#include<cstring>
#include<queue>
using namespace std;
const int N=1010;
int n,m,f,s,sx,sy,ex,ey;
char g[N][N];
int dis[N][N];
int bt[4][2]= {{1,0},{-1,0},{0,1},{0,-1}};
void dfs(int x,int y)
{if(x==ex && y==ey){f=1;if(dis[x][y]<s)s=dis[x][y];return;}for(int i=0;i<4;i++){int nx=x+bt[i][0],ny=y+bt[i][1];if(nx<0 || nx>=m || ny<0 || ny>=n) continue;if(g[nx][ny]=='#') continue;if(dis[x][y]+1>=dis[nx][ny]) continue;dis[nx][ny]=dis[x][y]+1;g[nx][ny]='#';dfs(nx,ny);g[nx][ny]='.';}return ;
}
int main()
{cin>>m>>n;getchar();for(int i=0; i<m; i++){for(int j=0; j<n; j++){scanf("%c",&g[i][j]);if(g[i][j]=='@')sx=i,sy=j;else if(g[i][j]=='*')ex=i,ey=j;}getchar();}memset(dis,0x3f,sizeof dis);dis[sx][sy]=0;f=0;s=99999;g[sx][sy]='#';dfs(sx,sy);if(!f)cout<<"-1\n";elsecout<<s<<"\n";return 0;
}

BFS

#include<iostream>
#include<algorithm>
#include<cstring>
#include<queue>
using namespace std;
const int N=1010;
int n,m;
char g[N][N];
int dis[N][N];
int bt[4][2]= {{1,0},{-1,0},{0,1},{0,-1}};
int main()
{cin>>m>>n;getchar();int sx,sy,ex,ey;for(int i=0; i<m; i++){for(int j=0; j<n; j++){scanf("%c",&g[i][j]);if(g[i][j]=='@')sx=i,sy=j;}getchar();}memset(dis,0,sizeof dis);queue<pair<int,int> > q;q.push({sx,sy});g[sx][sy]='#';int f=0;while(!q.empty()){int x=q.front().first;int y=q.front().second;q.pop();for(int i=0; i<4; i++){int nx=x+bt[i][0],ny=y+bt[i][1];if(nx<0 || nx>=m || ny<0 || ny>=n) continue;if(g[nx][ny]=='#') continue;dis[nx][ny]=dis[x][y]+1;q.push({nx,ny});if(g[nx][ny]=='*'){f=1;cout<<dis[nx][ny]<<"\n";break;}g[nx][ny]='#';}if(f)break;}if(!f)cout<<"-1\n";return 0;
}

计蒜客 - T1212 仙岛求药 BFS+DFS剪枝相关推荐

  1. Java实现 计蒜客 1251 仙岛求药

    仙岛求药 少年李逍遥的婶婶病了,王小虎介绍他去一趟仙灵岛,向仙女姐姐要仙丹救婶婶.叛逆但孝顺的李逍遥闯进了仙灵岛,克服了千险万难来到岛的中心,发现仙药摆在了迷阵的深处.迷阵由 M \times NM× ...

  2. 信息学奥赛一本通(1251:仙岛求药)

    1251:仙岛求药 时间限制: 1000 ms         内存限制: 65536 KB 提交数: 11479     通过数: 4968 [题目描述] 少年李逍遥的婶婶病了,王小虎介绍他去一趟仙 ...

  3. 百练/ 北京大学2016研究生推免上机考试(校内)D: 仙岛求药(广度优先搜索)

    题目来源:http://noi.openjudge.cn/ch0205/2727/ 2727:仙岛求药 总时间限制: 1000ms  内存限制:65536kB 描述 少年李逍遥的婶婶病了,王小虎介绍他 ...

  4. 一本通题解——1251:仙岛求药

    题目相关 题目链接 一本通 OJ,http://ybt.ssoier.cn:8088/problem_show.php?pid=1251. 计蒜客 OJ,https://nanti.jisuanke. ...

  5. 计蒜客:迷宫(二)---bfs

    计蒜客:bfs求解迷宫游戏 题目描述: 蒜头君在你的帮助下终于逃出了迷宫,但是蒜头君并没有沉浸于喜悦之中,而是很快的又陷入了思考,从这个迷宫逃出的最少步数是多少呢? 输入格式 第一行输入两个整数 nn ...

  6. 仙岛求药(信息学奥赛一本通-T1251)

    [题目描述] 少年李逍遥的婶婶病了,王小虎介绍他去一趟仙灵岛,向仙女姐姐要仙丹救婶婶.叛逆但孝顺的李逍遥闯进了仙灵岛,克服了千险万难来到岛的中心,发现仙药摆在了迷阵的深处.迷阵由M×N个方格组成,有的 ...

  7. 计蒜客-T1284 夫子云游(简单搜索dfs)

    父子云游 题目链接:https://vjudge.net/problem/%E8%AE%A1%E8%92%9C%E5%AE%A2-T1284 题目描述 改编自猫腻所著的同名小说<将夜>目前 ...

  8. 坑!计蒜客——乳草的侵占

    计蒜客--乳草的侵占(BFS) BFS一直写不会,可能是多加了个队列,写起来不是太容易.不过最近还是稍微入门了BFS,跟DFS差别不太大,还是由三个部分组成--出口.标记.枚举. DFS的主要的思想就 ...

  9. [计蒜客 15504 百度的科学计算器(简单)]表达式求值

    [计蒜客 15504 百度的科学计算器(简单)]表达式求值 分类: Math 表达式求值 1. 题目链接 [计蒜客 15504 百度的科学计算器(简单)] 2. 题意描述 求一个只带加减的实数表达式. ...

  10. K - Triangle 计蒜客 - 42405

    K - Triangle 计蒜客 - 42405 题意: 给你一个三角形的三点,再给你三角形边上一个点,让你求另一个点(也要在三角形上),使得平分三角形的面积 题解: 计算几何 三角形的三边ab,ac ...

最新文章

  1. 复杂科学2021年度精选:从诺贝尔奖到未来科学
  2. Python之路--WEB框架本质
  3. 一种可行的简单的Scene结构in cocos2d
  4. 关于APP更新,两包共存的解决方案
  5. 任务状态段TSS和TSS描述符
  6. 桥接设计模式(Bridge)
  7. 视觉在无人驾驶中的应用及分类_紫外光在机器视觉中的应用
  8. Docker 和 Kubernetes了解一下
  9. 自动化测试遇到的难点_自动化测试不成功的原因和实施过程中存在的问题
  10. 在mysql lt_amp;lt;转amp;gt;mysql 树查询话语
  11. 开发中经常用到的特效效果
  12. 针对移动式和无线物联网设备的低压电机控制系统的设计
  13. 男生总会误解女生的14个地方。【爱她就停下两分钟看看吧!】
  14. Windows DOS内部命令详解04——del、ren、cls、ver、date、time
  15. 回溯法之N皇后问题——C++代码
  16. [人物]一个预言家的命运:忽悠了马云的“骗子”,风口上的先知
  17. 了解和使用CSS中的rem单位
  18. 未来的计算机科技画,未来科技生活绘画作品有哪些
  19. 流量精灵刷流量的实例教程
  20. word文档出现乱码的解决方法

热门文章

  1. 2021-1-25计算机快速入门,简单掌握各种技巧
  2. 修改input提示文字样式
  3. KeilC51基础 利用仿真测试代码的运行时间
  4. veeam的备份策略(每周6增量备份,每周日合成全量备份)
  5. WIN10/WIN11 优启动 GHOST
  6. 游戏盾SDK的防护介绍
  7. 学习笔记 Tianmao 篇 使用简单封装后的自定义OkHttp 获取json被GSON解析后的数据
  8. Failed to compile../public/UEditor/dialogs/template/template.html 1:0Module parse failed: Unexpec
  9. vue 修改logo实现展示自定义的logo
  10. 英语 前缀 (整理中)