TYVJ P1234 - bench与奔驰
背景 Background
公园里有个人在练开奔驰 - -!,但是总是撞在bench上 (众人曰:狼来了,快跑啊!)
描述 Description
公园里的bench与奔驰都是无敌的,不会被撞坏。
由于开奔驰的人比较"有特点",总是向上下左右四个方向开,而且只会在撞到椅子之后改变方向(起步时除外) - -!
现在他给你一张地图,上面标明 他的位置 、 公园里的bench的位置 和 他想到达的位置,可能会有冲出地图的可能
请你告诉他最少撞多少下才能到达目的地,并答应事成之后会给你一辆奔驰..............................................的照片
输入格式 InputFormat
第一行,两个数,分别表示地图的行和列,都不大于50
以下是地图,"."表示地面,"S"表示起点,"E"表示终点,"B"表示bench(什么意思呢?)
保证只有一个终点和一个起点,并不会出现其他字符
输出格式 OutputFormat
第一行,表示他能不能到达目的地。如果能,就输出"Yes"。否则,输出"No"
如果能到达目的地,就在第二行输出最少的撞击次数
样例输入 SampleInput [复制数据]
测试数据1:5 5BBBBBB...BBSE.BB...BBBBBB 测试数据2:3 3S.......E
样例输出 SampleOutput [复制数据]
测试数据1:Yes0 测试数据2:No
数据范围和注释 Hint
测试数据1:点火后直接向右走
测试数据2:四个方向都会冲出地图
来源 Source
某个经典的游戏......
#include <iostream>
#include <cmath>
#include <cstdio>
#include <algorithm>
#include <cstring>
#include <string>
#include <cstdlib>
#include <queue>
using namespace std;const int maxn=60;
struct qq
{int x,y,d;
} ya,pu;
queue<qq> q;
int sx,sy,l,step,n,m,cnt=0;
char s[maxn][maxn];void close()
{
exit(0);
}bool judge(int x,int y,int xx,int yy)
{cnt++;if (cnt>1E7) {printf("No\n");close();}if (s[x][y]=='E'){printf("Yes\n%d\n",step);close();}if (s[x][y]=='B'){for (int j=1;j<=4;j++){if (j==ya.d) continue;pu.x=xx;pu.y=yy;pu.d=j;q.push(pu);}return true;}return false;
}void simulate()
{ya=q.front();q.pop();if (ya.d==4){for (int i=ya.y;i>=1;i--){if (judge(ya.x,i,ya.x,i+1))return;}}if (ya.d==2){for (int i=ya.y;i<=m;i++)if (judge(ya.x,i,ya.x,i-1))return;}if (ya.d==3){for (int i=ya.x;i<=n;i++)if (judge(i,ya.y,i-1,ya.y))return;}if (ya.d==1){for (int i=ya.x;i>=1;i--)if (judge(i,ya.y,i+1,ya.y))return;}
}void work()
{step=0;while (!q.empty())q.pop();for (int i=1;i<=4;i++){ya.x=sx;ya.y=sy;ya.d=i;q.push(ya);}while (!q.empty() && step<=2500) //delete{l=q.size();for (int i=1;i<=l;i++){simulate();}step++;}
}void init()
{scanf("%d %d",&n,&m);for (int i=1;i<=n;i++){scanf("%s",s[i]);for (int j=m;j>=1;j--){s[i][j]=s[i][j-1];}s[i][0]='\0';}for (int i=1;i<=n;i++)for (int j=1;j<=m;j++){if (s[i][j]=='S'){sx=i;sy=j;}}work();printf("No\n");
}int main ()
{init();close();return 0;
}
转载于:https://www.cnblogs.com/cssystem/p/3170632.html
TYVJ P1234 - bench与奔驰相关推荐
- oj betch与奔驰
Problem 38: bench与奔驰 Time Limit:1 Ms| Memory Limit:128 MB Difficulty:2 Description 公园里有个人在练开奔驰 - -!, ...
- d3.js 旋转图形_【IOS游戏推荐】百万畅销游戏刚从STEAM移植至IOS平台,在极端地形中冒险前进!——旋转轮胎:泥泞奔驰...
前言 大家可以关注游戏推荐备用号: 哈士奇推荐IOS (万一失联了呢~) 哈士奇小店 哈士奇小店一些奇奇怪怪的东西需要的朋友可以扫描右边的二维码. 重要提醒到底怎么样才能不错过哈士奇君的更新呢?第一时 ...
- apache bench linux,linux – 如何在CentOS上安装Apache Benchmark?
我尝试在我的centos上使用 Is there a way to install Apache Bench (ab) without installing apache解决方案安装Apache Be ...
- 英伟达奔驰共同发布自动驾驶系统,还自带停车功能
大数据文摘出品 来源:VB 编译:白浩然 最近,英伟达(Nvidia)宣布为了和奔驰(Mercedes-Benz)汽车紧密合作,计划从2024年开始推出一款车载计算系统和AI基础设施,该技术于去年1月 ...
- TYVJ P1080 N皇后 Label:dfs PS:以前做的一道题,贴出来防忘
描述 检查一个如下的6 x 6的跳棋棋盘,有六个棋子被放置在棋盘上,使得每行.每列只有一个,每条对角线(包括两条主对角线的所有平行线)上至多有一个棋子. 上面的布局可以用序列2 4 6 1 3 5来描 ...
- 未定义标识符 stringc/c++(20)_20款奔驰G63AMG霸气颜值 运动造型
20款奔驰G63外观方面,采用全新的金属漆,非常亮眼又感觉很有质感,设计上依旧是熟悉的设计风格,方盒子的车身造型粗犷硬朗,前脸直瀑式的中网非常大气,两侧是圆形的几何多光束MULTIBEAM LED大灯 ...
- |Tyvj|动态规划|P1004 滑雪
http://tyvj.cn/p/1004 由于考虑高度问题,确保每个值都算出来,这里用的是记忆化搜索. #include<cstdio> #include<cstring> ...
- BZOJ 3224: Tyvj 1728 普通平衡树 treap
3224: Tyvj 1728 普通平衡树 Time Limit: 1 Sec Memory Limit: 256 MB 题目连接 http://www.lydsy.com/JudgeOnline/p ...
- web服务器测试web bench
web bench是一款网站压力测试工具,常用命令:./webbench -c 10 -t 10 xxx(xxx是网址),-c是指定客户端的数目,-t是指定测试秒数. [root@localhost ...
最新文章
- CveService.java
- C#使用ExecuteReader返回DataReader既有查询结果集又有输出参数或返回值的使用注意事项...
- php gbk字符串 存utf8 html,php utf8 gbk 数组 互转(示例代码)
- Kubernetes原理浅析
- vue给组件传html,如何将 html 模板作为道具传递给 Vue 组件
- WORD2010每次启动都要配置
- 一步一坑学android之禁用Appt2(andriod studio3.0)
- oracle 查看 统计更新时间,oracle查看和更新统计表的信息
- 'WebElement' object is not iterable
- java clone()用法_java clone方法使用详解(转)
- QFIL进入900E或90DB模式,download fail
- Python -- 网络爬虫:爬取花瓣网站图片
- 客户需求分析8个维度_客户需求不知如何分析总结?一篇文章让你少走弯路!...
- matlab无法打开excel的问题
- C语言画直线~Bresenham方法
- Python 每日一记217根据词频生成词云图
- 入门级深度学习服务器配置方案
- 符号_和平精英名字特殊符号怎么打?哪些特色符号可以用?
- [OHIF-Viewers]医疗数字阅片-医学影像-es6解构赋值-const{}=-let{}=
- 信息系统项目管理师——信息化和信息系统