思路:

可以和1010一个思路。这个抽象的说就是让你求给定图中两点的最短距离,其实dfs的题目能变化的地方就在“终点的回溯处”,在我们到达终点后,再判断一些附加的值(本题里是最短距离是否更新),从而得到答案。

这题有个坑点,就是图里'x',即守卫在的点。通常在dfs之前我们都习惯将map[cur_x][cur_y]设置成无法返回的墙,然后在调用完dfs之后再设回通路,而对于x点来说,我们应该将其设置成'x'而不是通路!不然如果the most optimal way如果是后找到的话,那么我们就会受到影响,题目的数据给的不错。。能发现这点


代码:

#include <iostream>
#include <cstring>
#include <cstdio>
#define M 202
#define INF 65535
using namespace std; int n,m;
char map[M][M];
int dir[][] = {{,},{-,},{,},{,-}};
int ans; void dfs(int cx,int cy,int len) {
int flag = ;
//硬条件剪枝
if(cx<||cy<||cx>n||cy>m) return;
if(map[cx][cy] == '#') return;
//软条件剪枝
if(len >= ans) return;
if(map[cx][cy] == 'x') {
len++;
flag = ;
}
if(map[cx][cy] == 'r') {
ans = len<ans?len:ans;
return;
}
for(int i = ;i < ;i++) {
int nx = cx+dir[i][];
int ny = cy+dir[i][];
map[cx][cy] = '#';
dfs(nx,ny,len+);
if(flag) map[cx][cy] = 'x';
else map[cx][cy] = '.';
}
} int main()
{
int sx,sy;
while(cin>>n>>m)
{
ans = INF;
for(int i = ;i <= n;i++)
{
scanf("%s",map[i]+);
for(int j = ;j <= m;j++)
if(map[i][j] == 'a') {
sx = i;
sy = j;
}
}
dfs(sx,sy,);
if(ans == INF) {
cout<<"Poor ANGEL has to stay in the prison all his life."<<endl;
continue;
}
cout<<ans<<endl;
}
return ;
}

最新文章

  1. python内置函数 3
  2. WCF初探-16:WCF数据协定之基础知识
  3. PowerShell与CMD在路径解析上的一点不同
  4. Window VNC远程控制LINUX:VNC详细配置介绍
  5. window.print打印指定div实例代码
  6. jquery.cookie()方法
  7. android学习之4种点击事件的响应方式
  8. 一个C++的多态和虚函数实例
  9. linux-swappiness参数的作用及设置
  10. Linux07--Shell程序设计03 通配符与正则表达式
  11. 用sudo命令无法读取环境变量
  12. HTTPS与SSL
  13. EasyMvc--让MVC区域开发更Easy(提供源码下载)
  14. jquery获取文件名称
  15. R语言-Kindle特价书爬榜示例 &amp; 输出HTML小技巧(转)
  16. 02-windows 安装以太坊 ethereum 客户端 (win7-64)-大叔思维
  17. IOC容器在web容器中初始化过程——(二)深入理解Listener方式装载IOC容器方式
  18. Django ORM详解
  19. MySQL学习笔记_4_MySQL创建数据表(下)
  20. Java基础——0 前言

热门文章

  1. Android群英传》读书笔记 (1) 第一章 Android体系与系统架构 + 第二章 Android开发工具新接触
  2. 异步tcp通信——APM.ConsoleDemo
  3. grunt插件[font-spider] : 转码,压缩字体 @font-face
  4. Javascript 获取url参数,hash值 ,cookie
  5. Js 通过点击改变css样式
  6. JavasScript基数排序
  7. Web字体工具整理,网页图标字体以及使用方法整理
  8. Hive学习之一 《Hive的介绍和安装》
  9. c/c++内存机制(一)(转)
  10. When Colon Scripting is comming