追踪ws的怪蜀黍(DFS)
美丽的河海大学校园里惊现一只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...
怪蜀黎不管怎么走都会被发现的。
题目描述:
#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)相关推荐
- VueJs开发笔记—IDE选择和优化、框架特性、数据调用、路由选项及使用
一.IDE的选择: VsCode和WebStorm都是不错的选择,说一下两者的优缺点,调试便捷性来说两者不相上下. WebStorm缺点:性能方面VsCode远好于WebStorm: WebStorm ...
- javascript基础修炼(10)——VirtualDOM和基本DFS
本篇只是部分原理的学习笔记,并不代表框架真实源码的实现逻辑. 1. Virtual-DOM是什么 Virtual-DOM,即虚拟DOM树.浏览器在解析文件时,会将html文档转换为document对象 ...
- dfs时间复杂度_两道有意思的时间复杂度计算
第一题 Leetcode 395 Loading...leetcode.com Find the length of the longest substring T of a given strin ...
- 记一次反制追踪溯本求源
转载自公众号:酒仙桥六号部队 前言 朋友说自己服务器巨卡,里边放了一堆项目资料,环境也集成一大堆,身为他bb,义不容辞,必须给他看看,本来以为挺简单的,给杀杀毒,清理一下文件就ok了,没想到搞了挺久, ...
- DFS分布式文件存储系统
1. 安装 版本 依赖包 FastDFS < 5.05 libevent gcc-c++ perl-未完待续 FastDFS 5.05 gcc gcc-c++ openssl openssl-d ...
- 重要性采样和多重重要性采样在路径追踪中的应用
重要性采样和多重重要性采样在路径追踪中的应用 1 蒙特卡洛路径追踪简要回顾 1.1 算法主要流程 1.2 半球面均匀采样方法 2 重要性采样的运用 2.1 简单例子与基本概念 2.2 路径追踪中的重要 ...
- 闫令琪:Games101 现代计算机图形学-光线追踪(三):渲染方程和路径追踪path ray tracing 作业Assignment07解析
文章目录 0 whitted光线追踪的局限 1 辐射度量学 1.1 光线的表示 Radiance 1.2 物体表面上一个点的亮度 Irradiance 1.3 BRDF(Bidirectional R ...
- python 拓扑排序 dfs bfs_图遍历算法之DFS/BFS
在计算机科学, 图遍历(Tree Traversal,也称图搜索)是一系列图搜索的算法, 是单次访问树结构类型数据(tree data structure)中每个节点以便检查或更新的一系列机制.图遍历 ...
- 单目标跟踪SiamMask:特定目标车辆追踪 part2
日萌社 人工智能AI:Keras PyTorch MXNet TensorFlow PaddlePaddle 深度学习实战(不定时更新) CNN:RCNN.SPPNet.Fast RCNN.Faste ...
最新文章
- 解决Mask RCNN训练时GPU内存溢出问题
- ubuntu安装mysql 密码忘了怎么办_在ubuntu上面安装mysql都密码忘记及一些常用命令...
- 旷视首席科学家孙剑:深度学习变革视觉计算
- 表白c语言程序设计,C语言编程学习打造表白神器:亲爱的让我们相爱在一起
- WebRTC 那些常用的缩略词以及部分知识杂谈
- 嵌套套娃,MySQL子查询,单行与多行子查询,相关和不相关(关联)子查询,完整详细可收藏
- pycharm/clion/idea等产品多含代码左移右移操作
- 性能高1倍,价格低3/4!数据库实时同步新选择!
- 线程Thread类的start()方法和run()方法
- Hadoop系列之Reporter,Partitioner,JobConf, JobClient
- System.Convert 的一些事
- 继承或者重写django的user model?
- YII中的CComponent,CEvent与Behavior及CActiveRecordBehavior
- 8.14 few-shot learning——幻想数据
- 22. PHP 日期和时间
- 01 前言/基础设施 - DevOps之路
- 人工智能系统的形式化验证技术研究进展与趋势
- 奥尼捷多功能证件包护照包证件夹男士卡包女士必备 A101 黑色【图片 价格 品牌 报价】-京东商城...
- windows电脑录屏消除回声
- STM32F103_study59_The punctual atoms(Input capture experimentInput to capture experimental theoreti)