追踪WS的怪蜀黍

美丽的河海大学校园里惊现一只ws的怪蜀黍,搞得校园里的女同胞们人心惶惶。河海大学男同胞们个个义愤填膺,他们打算团结起来捕捉这只ws怪蜀黎,把它送到相关部门处理。所以男同胞们成立了一个“BeatWS”团队,决定展开激烈的搜捕,捕捉这只怪蜀黎。然而怪蜀黎也是相当狡猾的,它提高了警惕,并尽量地躲开男同胞们的视线,妄想逃之夭夭。

假设河海大学是一个M*N的矩形点阵(2<=m,n<=20)。

怪蜀黎是在其中的一个点,用大写字母W表示。

男同胞分布在图中的某些点,用大写字母S表示(S的数目>=0)。

道路用.表示。

假设人的视线范围是当前位置的上下左右一格的距离(即以当前位置为中心点的十字)。

问怪蜀黎能否在不被看到的情况下,走到校园的出口E,当然,如果ws怪蜀黎在E处被发现,也算怪蜀黎逃脱成功。

题目保证一定存在W和E.


举例:

..E

W.S

...

W走的过程中,S看不到W,怪蜀黎可以成功逃走。

S.E.

..S.

W...

怪蜀黎不管怎么走都会被发现的。

题目描述:

就是一道简单的DFS,但是却被卡了很久。里面有很多之前没有注意到的地方。
首先,对于一个点来说,他可能有多种方式经过这路。对于可行解的题目,每次到这个点的状态是一样的(未找到解),所以不需要继续在深入进去。而在找最短路径或者最优路径的时候,每次到这里的状态可能是不一样的,所以需要继续进入更新,但是如果一直深入却很有可能超时,所以一般在求解最优路径时往往用广搜放入队列来解决。
其次,在找不到bug的时候输出中间状态是一种很好的方法!
代码实现:
#include <iostream>
#include <cstring>
#include <cmath>
#include <cstdio>
#define MAX 22using namespace std;int M,N;
int flag;
int d[4][2]={1,0, -1,0, 0,1, 0,-1};
char maze[MAX][MAX];
void DFS(int x,int y);
bool if_catch(int x,int y);
int main()
{cin>>M>>N;int sx,sy;int ex,ey;flag = false;for( int i = 0; i < M; i++ ){cin>>maze[i];getchar();}for( int i = 0; i < M; i++ ){for( int j = 0; j < N; j++ ){if( maze[i][j] == 'E' ){ex = i;ey = j;}else if( maze[i][j] == 'W' ){sx = i;sy = j;}else if( maze[i][j] == 'S' ){for( int s = 0; s < 4; s++ ){int nx = i+d[s][0];int ny = j+d[s][1];if( nx >= 0 && nx < M && ny >= 0 && ny < N && maze[nx][ny] != 'E' && maze[nx][ny] != 'W' && maze[nx][ny] != 'S')maze[nx][ny] = 's';}}}}
//    cout<<endl;
//    for( int i = 0; i < M; i++ )
//    {
//        cout<<maze[i]<<endl;
//    }if( if_catch( sx,sy ) ){cout<<"No"<<endl;return 0;}DFS(sx,sy);
//    cout<<endl;
//    for( int i = 0; i < M; i++ )
//    {
//        cout<<maze[i]<<endl;
//    }if( flag )cout<<"Yes"<<endl;elsecout<<"No"<<endl;return 0;
}void DFS( int x, int y )
{if( maze[x][y] == 'E' || flag ){flag = true;return ;}maze[x][y] = 'W';for( int i = 0; i < 4; i++ ){int nx = x+d[i][0];int ny = y+d[i][1];if( nx >= 0 && nx < M && ny >= 0 && ny < N && (maze[nx][ny] == '.' || maze[nx][ny] == 'E') ){DFS(nx,ny);//maze[x][y] = '.';}if( flag )break;}return ;
}bool if_catch(int x,int y)
{for( int i = 0; i < 4; i++ ){int nx = x+d[i][0];int ny = y+d[i][1];//if( maze[nx][ny] == 'S' )return true;}return false;
}

追踪ws的怪蜀黍(DFS)相关推荐

  1. VueJs开发笔记—IDE选择和优化、框架特性、数据调用、路由选项及使用

    一.IDE的选择: VsCode和WebStorm都是不错的选择,说一下两者的优缺点,调试便捷性来说两者不相上下. WebStorm缺点:性能方面VsCode远好于WebStorm: WebStorm ...

  2. javascript基础修炼(10)——VirtualDOM和基本DFS

    本篇只是部分原理的学习笔记,并不代表框架真实源码的实现逻辑. 1. Virtual-DOM是什么 Virtual-DOM,即虚拟DOM树.浏览器在解析文件时,会将html文档转换为document对象 ...

  3. dfs时间复杂度_两道有意思的时间复杂度计算

    第一题 Leetcode 395 Loading...​leetcode.com Find the length of the longest substring T of a given strin ...

  4. 记一次反制追踪溯本求源

    转载自公众号:酒仙桥六号部队 前言 朋友说自己服务器巨卡,里边放了一堆项目资料,环境也集成一大堆,身为他bb,义不容辞,必须给他看看,本来以为挺简单的,给杀杀毒,清理一下文件就ok了,没想到搞了挺久, ...

  5. DFS分布式文件存储系统

    1. 安装 版本 依赖包 FastDFS < 5.05 libevent gcc-c++ perl-未完待续 FastDFS 5.05 gcc gcc-c++ openssl openssl-d ...

  6. 重要性采样和多重重要性采样在路径追踪中的应用

    重要性采样和多重重要性采样在路径追踪中的应用 1 蒙特卡洛路径追踪简要回顾 1.1 算法主要流程 1.2 半球面均匀采样方法 2 重要性采样的运用 2.1 简单例子与基本概念 2.2 路径追踪中的重要 ...

  7. 闫令琪:Games101 现代计算机图形学-光线追踪(三):渲染方程和路径追踪path ray tracing 作业Assignment07解析

    文章目录 0 whitted光线追踪的局限 1 辐射度量学 1.1 光线的表示 Radiance 1.2 物体表面上一个点的亮度 Irradiance 1.3 BRDF(Bidirectional R ...

  8. python 拓扑排序 dfs bfs_图遍历算法之DFS/BFS

    在计算机科学, 图遍历(Tree Traversal,也称图搜索)是一系列图搜索的算法, 是单次访问树结构类型数据(tree data structure)中每个节点以便检查或更新的一系列机制.图遍历 ...

  9. 单目标跟踪SiamMask:特定目标车辆追踪 part2

    日萌社 人工智能AI:Keras PyTorch MXNet TensorFlow PaddlePaddle 深度学习实战(不定时更新) CNN:RCNN.SPPNet.Fast RCNN.Faste ...

最新文章

  1. 解决Mask RCNN训练时GPU内存溢出问题
  2. ubuntu安装mysql 密码忘了怎么办_在ubuntu上面安装mysql都密码忘记及一些常用命令...
  3. 旷视首席科学家孙剑:深度学习变革视觉计算
  4. 表白c语言程序设计,C语言编程学习打造表白神器:亲爱的让我们相爱在一起
  5. WebRTC 那些常用的缩略词以及部分知识杂谈
  6. 嵌套套娃,MySQL子查询,单行与多行子查询,相关和不相关(关联)子查询,完整详细可收藏
  7. pycharm/clion/idea等产品多含代码左移右移操作
  8. 性能高1倍,价格低3/4!数据库实时同步新选择!
  9. 线程Thread类的start()方法和run()方法
  10. Hadoop系列之Reporter,Partitioner,JobConf, JobClient
  11. System.Convert 的一些事
  12. 继承或者重写django的user model?
  13. YII中的CComponent,CEvent与Behavior及CActiveRecordBehavior
  14. 8.14 few-shot learning——幻想数据
  15. 22. PHP 日期和时间
  16. 01 前言/基础设施 - DevOps之路
  17. 人工智能系统的形式化验证技术研究进展与趋势
  18. 奥尼捷多功能证件包护照包证件夹男士卡包女士必备 A101 黑色【图片 价格 品牌 报价】-京东商城...
  19. windows电脑录屏消除回声
  20. STM32F103_study59_The punctual atoms(Input capture experimentInput to capture experimental theoreti)

热门文章

  1. CSS实现DIV块的阴影效果
  2. Queen Collisions(分行列模拟)
  3. win10离线安装 .NetFramework3.5
  4. python结合mitmproxy抓包实践
  5. 在csdn中,如何获取积分
  6. 码牛学院安卓Android移动互联网高级开发正式课学习笔记
  7. 观张国荣的电影《霸王别姬》有感
  8. OCTAFX滑点滑到令人发指 现在出金也不给出金是黑平台无疑了
  9. 【慕课网】人工智能-语音入门|公开课知识整理
  10. 郭琳加冕 2022第三季完美大师 全球人气季军