洛谷 P2689 东南西北【模拟/搜索】
题目描述
给出起点和终点的坐标及接下来T个时刻的风向(东南西北),每次可以选择顺风偏移1个单位或者停在原地。求到达终点的最少时间。
如果无法偏移至终点,输出“-1”。
输入输出格式
输入格式:
第一行两个正整数x1,y1,表示小明所在位置。
第二行两个正整数x2,y2,表示小明想去的位置。
第三行一个整数T,表示T个时刻。
第四至第N+3行,每行一个字符,表示风向,即东南西北的英文单词的首字母。
输出格式:
最少走多少步。
输入输出样例
1 1 2 2 5 E N W W N
2
1 1 2 2 1 W
-1
1 1 2 2 3 W W W
-1
说明
样例1:向东走一步,向南走一步。
样例2、3:无法到达。
1<=T<=50
东:East
南:South
西:West
北:North
【分析】:注意:风从哪里来,就叫什么风,就往相反的方向走。
这个题是一个简单的模拟和搜索;只需要关注你要往哪里走,走多少步。
将一个二维数组分解,得到初始点和终点四个值;
最短路径就是分开跳,直至跳完,在验证是否到了终点;
//搜索
【代码】:
![](/assets/blank.gif)
![](/assets/blank.gif)
#include<iostream> #include<cstring> #include<cstdio> using namespace std; int a,x,y,xx,yy; char f[50]; int cnt=0; int main() {cin>>x>>y;cin>>xx>>yy;cin>>a;for(int i=1;i<=a;i++){cin>>f[i];if(x>xx&&f[i]=='S') { x-=1;cnt++;}if(x<xx&&f[i]=='N') { x+=1;cnt++;}if(y>yy&&f[i]=='W') { y-=1;cnt++;}if(y<yy&&f[i]=='E') { y+=1;cnt++;}}if(x!=xx||y!=yy) cout<<"-1";else cout<<cnt; }
模拟
![](/assets/blank.gif)
![](/assets/blank.gif)
#include<iostream> #include<cstring> #include<cstdio> using namespace std; char t; //t用来输入方向。 int next[4][2]={{1,0},{0,1},{-1,0},{0,-1}},book[1000][1000],way[1000],startx,starty,endx,endy,n,i,ans=999999; //book用来标记一个点走没走过,way储存了每一秒的风向。 int min(int x,int y) {return x<y?x:y; } int getnum(char c) //这个函数用来判断是东西南北里的哪一项。 {if(c=='N'){return 0;}if(c=='E'){return 1;}if(c=='S'){return 2;}if(c=='W'){return 3;} } void dfs(int x,int y,int now,int step) //step是现在几秒了,now是步数。 {if(x==endx && y==endy) //如果到达。 {ans=min(ans,now); //更新答案return;}if(step==n+1) //这里很重要,不然会RE。 {return;}int tx,ty,k;k=way[step];tx=x+next[k][0];ty=y+next[k][1];if(tx>=1 && tx<=n && ty>=1 && ty<=n && book[tx][ty]==0) //如果这一秒风吹我走没有越界也没有来过这就代表可以走 {book[tx][ty]=1; //标记这儿我已走过了。dfs(tx,ty,now+1,step+1); //步数加一,秒数加一book[tx][ty]=0; //回溯 }dfs(x,y,now,step+1); //就是这一秒我不走。return; } int main() {scanf("%d %d",&startx,&starty);scanf("%d %d",&endx,&endy);scanf("%d",&n);for(i=1;i<=n;i++){scanf("%c\n",&t); way[i]=getnum(t); //将每一秒的风向储存好。 }dfs(startx,starty,0,1);if(ans==999999) //如果ans还是999999,就说明到不了。 {puts("-1");}else{printf("%d",ans);}return 0; }
DFS
转载于:https://www.cnblogs.com/Roni-i/p/7650751.html
洛谷 P2689 东南西北【模拟/搜索】相关推荐
- 洛谷 2921 记忆化搜索 tarjan 基环外向树
洛谷 2921 记忆化搜索 tarjan 传送门 (https://www.luogu.org/problem/show?pid=2921) 做这题的经历有点玄学,,起因是某个random题的同学突然 ...
- 简单 洛谷 P1563 【模拟】玩具谜题普及场
** 简单 洛谷 P1563 [模拟]玩具谜题普及场** 小南有一套可爱的玩具小人, 它们各有不同的职业. 有一天, 这些玩具小人把小南的眼镜藏了起来. 小南发现玩具小人们围成了一个圈,它们有的面朝圈 ...
- 洛谷P1074 靶形数独 [搜索]
题目传送门 题目描述 小城和小华都是热爱数学的好学生,最近,他们不约而同地迷上了数独游戏,好胜的他 们想用数独来一比高低.但普通的数独对他们来说都过于简单了,于是他们向 Z 博士请教, Z 博士拿出了 ...
- 【洛谷】【博弈搜索】P4363 [九省联考2018]一双木棋chess
洛谷 P4363 [九省联考2018]一双木棋chess 题目大意 ◇题目传送门◆ 分析 根据题目所给定的规则,可以发现对于每一行,其下面一行上放的棋子数目不可能多于上面的一行. 所以我们可以将每行上 ...
- 洛谷P5594 [XR-4] 模拟赛C++ 思路加代码
这道题水题一个 题目闪回 本蒟蒻只会发水题 作为洛谷灌水区大水桶,今天第一次发文章,主要是看那些题解里的大佬,做法有点太大佬了一点点,用了结构体什么的,对新ju手ruo过于的不友善,所以今 ...
- 任尔东西南北风(洛谷P2689题题解,Java语言描述)
送诗一首 <竹石> 作者:郑燮 咬定青山不放松,立根原在破岩中. 千磨万击还坚劲,任尔东西南北风. 题目要求 P2689题目链接 分析 这题有毛病诶,你看他说"抵达终点的最短时间 ...
- AC日记——潜伏者 洛谷 P1071 (模拟)
题目描述 R 国和 S 国正陷入战火之中,双方都互派间谍,潜入对方内部,伺机行动.历尽艰险后,潜伏于 S 国的 R 国间谍小 C 终于摸清了 S 国军用密码的编码规则: 1. S 国军方内部欲发送的原 ...
- 洛谷P5594-【XR-4】模拟赛(模拟)
题目描述: X 校正在进行 CSP 前的校内集训. 一共有 nnn 名 OIer 参与这次集训,教练为他们精心准备了 mmm 套模拟赛题. 然而,每名 OIer 都有各自的时间安排,巧合的是,他们在接 ...
- 洛谷P5594-【XR-4】模拟赛
题目描述 X 校正在进行 CSP 前的校内集训. 一共有 nn 名 OIer 参与这次集训,教练为他们精心准备了 mm 套模拟赛题. 然而,每名 OIer 都有各自的时间安排,巧合的是,他们在接下来的 ...
最新文章
- 使用Qt作窗口截屏(含源码)
- 关于大数据与机器学习,小白和牛人之间15个典型问答精华整理上篇
- Python多任务(4.多线程--Python中的互斥锁和死锁)
- C++11之异步调用
- 轻量级NuGet—BaGet
- php mysql 云虚拟机_虚拟机+apache+php+mysql 环境安装配置
- 解决Mac安装软件的“已损坏,无法打开。 您应该将它移到废纸篓”问题
- oracle角色与权限
- java如何获取文件路径_java如何获取文件路径
- Quartus II 12.0 下载、安装和破解
- 计算机仿真塞曼效应实验报告,实验报告模板
- 有关MATLAB归一化处理中,mapminmax的用法详解
- 生信入门(二)fastqc 生成的.html解读
- C语言快速 入门 一篇就够
- 干货 | 95后运维小哥20天+通过Elastic认证考试经验分享
- windows中的出站和入站规则
- Leetcode刷题 Day4~Day5
- 使用晨曦记账本,记录流水账及记录借还款
- MediaFire – 美国无限容量免费网络硬盘
- ArcGIS基础实验操作100例--实验66符号图层的保存与加载
热门文章
- C语言实现单链表面试题汇总
- mysql导出数据 程序_mysql导出数据
- python优雅编程_Python优雅地可视化数据
- 服务器在行例维护中,8月14日服务器例行维护公告
- android arm 寄存器,ARM汇编
- 怎么创建计算机快捷方式到桌面两种方法,使用脚本主机创建Windows快捷方式 - Windows Client | Microsoft Docs...
- Linux Ubuntu 16.04系统下可用的Windows应用
- (扩展欧几里德算法)zzuoj 10402: C.机器人
- s2sh框架搭建(辅助工具:MyEclipse)及解决一些遇到的问题
- php解析js的 arraybuffer_JS的所谓的第七种数据类型Symbol