瑶瑶带你玩激光坦克(暴力)
B - 瑶瑶带你玩激光坦克
Problem Description
有一款名为激光坦克的游戏,游戏规则是用一个坦克发出激光来达到一些目的,激光可以通过一些镜子反射。
机智的瑶瑶为了显示自己的智商高于常人,把这个游戏改造了一下,变成了用激光攻击敌人的游戏。
瑶瑶想知道射一次激光最多可以攻击到多少个敌人。
PS: 由于激光很强大,可以在击中敌人后穿过它,而瑶瑶自己的坦克由于有特殊装置,所以不会被激光击中,激光也会直接穿过它
Input
第1行两个正整数n, m (1 ≤ n, m ≤ 1000)表示地图大小,接下来n行每行m个字符描述地图。
. 表示此处为空地
* 表示此处为障碍(激光不可穿过,激光路径打到障碍时就结束)
T 代表瑶瑶的坦克位置
E 代表敌人
/ 代表按 左下-右上 放置的镜子
\ 代表按 左上-右下 放置的镜子
Output
一个整数代表瑶瑶向某个方向发射激光后最多可以攻击到的敌人数。
Sample Input
5 5 .*/E\ E*.*. E*TEE \.../ .*\EE
Sample Output
4
题目大意:给出一张地图,瑶瑶从开始位置,射出激光,问最多能打到多少个敌人。激光可以通过地图上的镜子反射,并且不会伤到瑶瑶自己,而是穿过她。
分析:直接用dfs递归的话,会爆栈,导致RE。所以,直接用循环来模拟全过程。
代码:
#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std;const int maxn = 1111;char g[maxn][maxn];
char mp[maxn][maxn];
int n, m;
int sr, sc, ans, cnt;
int dr[4] = {-1, 0, 1, 0};
int dc[4] = {0, 1, 0, -1};
int vis[maxn][maxn][5];void dfs(int r, int c, int i) {while(g[r][c] !='*' && !vis[r][c][i]) {vis[r][c][i] = 1;if(g[r][c] == 'E') {g[r][c] = '.';cnt++;}else if(g[r][c] == '/') {if(i == 0) i = 1;else if(i == 1) i = 0;else if(i == 2) i = 3;else if(i == 3) i = 2;}else if(g[r][c] == '\\') {if(i == 0) i = 3;else if(i == 1) i = 2;else if(i == 2) i = 1;else if(i == 3) i = 0;}r +=dr[i], c += dc[i];}return;
}int main() {scanf("%d%d", &n, &m);memset(mp, '*', sizeof(mp));for(int i = 1; i <= n; i++)scanf("%s", mp[i]+1);for(int i = 1; i <= n; i++)for(int j = 1; j <= m; j++) {if(mp[i][j] == 'T') {sr = i, sc = j;break;}}ans = 0;for(int i = 0; i < 4; i++) {memset(vis, 0, sizeof(vis));for(int j = 0; j < n+2; j++)for(int k = 0; k < m+2; k++)g[j][k] = mp[j][k];cnt = 0;dfs(sr, sc, i);ans = max(ans, cnt);}printf("%d\n", ans);return 0;
}
瑶瑶带你玩激光坦克(暴力)相关推荐
- ACdream 1099——瑶瑶的第K大——————【快排舍半,输入外挂】
瑶瑶的第K大 Time Limit:2000MS Memory Limit:128000KB 64bit IO Format:%lld & %llu Submit Status ...
- 手把手带你玩转需求预测-需求预测方法介绍
系列文章目录 手把手带你玩转需求预测 文章目录 系列文章目录 前言 时序预测算法类型 第一代:统计时序预测算法 第二代:经典机器学习方法 第三代:深度学习预测算法 总结 前言 预测算法的本质是从历史数 ...
- [小说]魔王冢(34)卢瑶瑶
那来人正是令他魂牵梦绕及至浪荡红尘的初恋情人,卢瑶瑶. 本乃昔日相伴之挚爱红颜,今却已生死两相隔.李翊轩早已忍耐不住激动的心情,顷刻间便泪如雨下.他快步上前,一把将她揽入怀中,死死地搂住不放. &qu ...
- 网络安全-信息收集- 谷歌浏览器插件收集信息,谷歌hacking搜索语法-带你玩不一样的搜索引擎
网络安全-信息收集- 谷歌浏览器插件收集信息,谷歌hacking搜索语法-带你玩不一样的搜索引擎 前言 一,我也是初学者记录的笔记 二,可能有错误的地方,请谨慎 三,欢迎各路大神指教 四,任何文章仅作 ...
- cad的文字嵌入线条_带你玩转CAD!
CAD画图已经成为化工人的必备技能.什么,这么多CAD必备技巧你居然还不知道?我该拿什么拯救你,我最最最最最最亲爱的旁友!!!下面给大家整理了50个相见恨晚的CAD技巧,带你玩转CAD!!相见恨晚的5 ...
- 对讲机的那点事:带你玩转LD800数字车载台读、写频操作:一
车载电台在车队行进过程中是最理想的联络指挥工具,它可以让车队步调一致地高效行驶,不会出现跟车掉队的情况.今天小编就带你玩转LD800数字车载台读写频操作: 基本参数: ◆256个信道,大屏幕彩屏显示 ...
- each 数据获取attr_调用高德POI数据,带你玩转长沙
长沙CITY,长沙SHOW 长沙C-BLOCK,长沙FLOW 长沙妹驼,叫长沙GIRL 说到长沙,大家第一想到的可能就是小吃,当然来长沙旅游,不光只是为了吃,这吃喝玩乐,咱都得来一套是吧.基于此,我调 ...
- 【对讲机的那点事】带你玩转灵通LT33公网集群对讲机
网集群对讲机已经遍布各个行业,而且公网集群对讲机与常规对讲机相比,具有更加强大的通信对讲调度能力,且功能更多.保密性更好,符合用户对无线通信的要求.今天小编就手把手教你玩转灵通LT33公网集群对讲机: ...
- java cxf 入口统一_分分钟带你玩转 Web Services【2】CXF
在实践中一直在使用 JAX-WS 构建 WebService 服务,服务还是非常稳定.高效的. 但还是比较好奇其他的 WebService 开源框架,比如:CXF/Axis2/Spring WS等. ...
最新文章
- websphere安装应用失败_如何使用安卓手机给任天堂Switch安装游戏NSUSBloader mobile
- 开发日记-20190529 关键词 读书笔记《鸟哥的Linux私房菜-基础学习篇》
- 嵌入式C语言之位运算 ..|.~.
- 【做题记录】[SCOI2009]围豆豆
- vue组件自定义v-model
- A - 敌兵布阵 (HDU - 1166)
- mysql查询报错2014_mysql Hibernate 查询时用别名报错
- git 怎么拉取线上代码到本地进行合并_android studio如何使用git提交、拉取、合并代码的操作...
- 执行sc query mysql,sc delete mysql没有反应
- java spark 环境_在 IntelliJ IDEA 中配置 Spark(Java API) 运行环境
- 【路径规划】基于matlab遗传算法求解多物流中心开放式车辆路径规划【含Matlab源码 017期】
- Android零散技术点
- 查看CentOS版本信息
- 金融衍生品交易系统(场内交易VS.场外交易)的架构特点
- ERP开源框架 + 二次开发平台 介绍
- C++ float转换int
- Windows驱动程序开发 - 初识驱动
- “魅力河南 智慧富民——互联网+旅游扶贫项目”签约仪式在郑州举行
- my ReadBook_guanlixinxixitong / 02382 / MIS / mis / 20130112 PM
- CSDN联合安恒信息 共同发布安全开发工程师能力标准
热门文章
- 北京龙泉寺,学霸寺院,低于985好意思进吗?
- [DA45] 使用SVM进行乳腺癌检测
- springboot+微信小程序老年人健康保障管理系统毕业设计源码302303
- shell脚本执行错误
- WEB SKILL HOT KEY
- 由参数方程确定的函数的一阶导数与二阶导数
- 【转】关于相关性的7个最常见的问题
- 如何使用红杏的公益代理
- java jre 32_【JRE】JRE32/64位官方下载 V8.0 官方版-趣致软件园
- HTML班级网页设计 基于HTML+CSS+JS制作我们的班级网页(web前端学生网页设计作品)...