P2689 东南西北
题目描述
给出起点和终点的坐标及接下来T个时刻的风向(东南西北),每次可以选择顺风偏移1个单位或者停在原地。求到达终点的最少时间。
如果无法偏移至终点,输出“-1”。
输入输出格式
输入格式:
第一行两个正整数x1,y1,表示小明所在位置。
第二行两个正整数x2,y2,表示小明想去的位置。
第三行一个整数T,表示T个时刻。
第四至第N+3行,每行一个字符,表示风向,即东南西北的英文单词的首字母。
输出格式:
最少走多少步。
输入输出样例
输入样例#1:
1 1 2 2 5 E N W W N
输出样例#1:
2
输入样例#2:
1 1 2 2 1 W
输出样例#2:
-1
输入样例#3:
1 1 2 2 3 W W W
输出样例#3:
-1
说明
样例1:向东走一步,向南走一步。
样例2、3:无法到达。
1<=T<=50
东:East
南:South
西:West
北:North
不说了,模拟就行

#include<iostream> #include<cstdio> #include<string.h> #include<algorithm> #include<math.h> #include<cmath> using namespace std; #define LL long long int E,W,S,N; int x,y,xx,yy,n; char c; int main() { scanf("%d%d%d%d",&x,&y,&xx,&yy); scanf("%d",&n); for(int i=1;i<=n;i++) { cin>>c; if(c=='N') N++;else if(c=='S') S++;else if(c=='E') E++;else if(c=='W') W++; } x=xx-x; y=yy-y; int t=0; if(x>0 && (x-E)>0) t=1; if(x<0 && (W+x)<0) t=1; if(y>0 && (x-N)>0) t=1; if(y<0 && S+y<0) t=1; if(!t) cout<<(abs(x)+abs(y)); else cout<<-1; return 0; }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 如何调用 DeepSeek 的自然语言处理 API 接口并集成到在线客服系统
· 【译】Visual Studio 中新的强大生产力特性
· 2025年我用 Compose 写了一个 Todo App