/*
注意两点
. 不可以使用替换可用节点为不可用节点的方法进行DFS
因为角落也可能有油,替换了就出不来。(某学长指导)
. 可用通过开一个数组(例如我的b[][]数组)
用了存储到当前位置剩余最大油量
这样到话,下次若有更优解,则更新b
反之无需继续遍历
对于BFS,可用结构体记录坐标和到当前位置到剩余油量
用方法2剪枝即可
以下为DFS方法实现
*/
#include <cstring>
#include <iostream>
using namespace std;
int n, m, l;
char a[][];
int b[][];
int w[][] = {{, }, {, }, { -, }, {, -}};
bool ans;
void dfs(int x, int y, int s)
{
//cout << "x = " << x+1 << " y = " << y+1 << " s = " << s <<" a = " << a[x][y] << endl;
if (x == n - && y == m - ) {ans = true; return;}
if (b[x][y] >= s) return;
if (a[x][y] == '+') s = l;
if (s <= || ans) return;
b[x][y] = s; for (int i = ; i < ; ++i)
{
int nx = x + w[i][], ny = y + w[i][];
if (nx >= && ny >= && nx < n && ny < m && a[nx][ny] != '#')
dfs(nx, ny, s-);
}
}
int main()
{
int t;
cin >> t;
while (t--)
{
memset(b, -, sizeof b);
cin >> n >> m >> l;
for (int i = ; i < n; ++i)
cin >> a[i];
ans = false;
dfs(, , l);
if (ans) cout << "Yes" << endl;
else cout << "No" << endl;
}
return ;
}

最新文章

  1. orange pi pc 体验(一)
  2. AJAX JSONP源码实现(原理解析)
  3. 选中没有选中的复选框,匹配含有某个字符串的正则,json取值的两种方法,把变量定义在外面跟里面的区别
  4. 关于&quot;user.dir&quot;的认识
  5. QGraphicsEffect介绍(十分漂亮)
  6. IOS 学习笔记 2015-03-20 OC-数值类型
  7. 初学scala1——Option
  8. Mac开发者必备实用工具推荐
  9. Android开发中Handler的经典总结--转载至网络
  10. CentOS 7安装Python3.5,并与Python2.7兼容并存
  11. 我的秋招经验分享(已拿BAT头条网易滴滴)
  12. MUI 添加自定义图标(注意点)
  13. python批量插入mysql数据库(性能相关)以及反引号的使用
  14. solidworks建立三维模型里面的几何对象和工程图里面的元素的联系
  15. 两个inline-block元素上下不对齐,出现错位
  16. Notes中几个处理多值域的通用函数
  17. Linux安装svn客户端
  18. Windows系统不同磁盘间的扩容教程
  19. java获取cpu、内存、硬盘信息[转]
  20. sqlite 判断表中是否包含 某个字段

热门文章

  1. 五.ssh远程管理服务
  2. Max Sum (dp)
  3. LeetCode(69):x 的平方根
  4. idea导入java项目
  5. 步步为营-93-MVC+EF简单实例
  6. 微信小程序--代码构成---JSON 配置
  7. models批量生成数据
  8. linux dig 命令使用方法
  9. Typora开启行内公式
  10. Cisco交换机基础命令 + Win Server08 R2 多网卡配置链路聚合