为啥20!!

5. 随风而动V2

题目ID:9357拓展题100分

最新提交:

Wrong Answer

20 分

历史最高:

Wrong Answer

30 分

时间限制: 1000ms

空间限制: 262144kB

题目描述

【题目描述】

maoge被困在了一个二维坐标平面上。x轴正方向为东,y轴正方向为北。

给出起点和终点的坐标。接下来10个时刻的风向(东南西北),每次可以选择顺风偏移1个单位或者停在原地。求到达终点的最少时间。如果无法偏移至终点,输出“-1”。

【数据格式】

输入第一行四个数x1,y1,x2,y2,表示起点和终点(0<=x1,x2<=10,0<=y1,y2<=10)。

10个字符,用空格隔开,表示接下来10个时刻的风向(E表示东,S表示南,W表示西,N表示北)。

输出一个数,最小时间,或者-1。

样例输入:

0 0 4 6

E E E E N N N N N N

样例输出:

10
代码:

#include<bits/stdc++.h>
using namespace std;
int main(){
	char a[10];
	int x1,y1,x2,y2,yE,xS,zW,sN;
	cin>>x1>>y1>>x2>>y2;
	for(int i=0;i<10;i++){
		cin>>a[i];
		if(a[i]=='E')yE++;
		else if(a[i]=='S')xS++;
		else if(a[i]=='W')zW++;
		else if(a[i]=='N')sN++;
	}
	if(abs(x1-x2)+abs(y1-y2)>10){
		cout<<-1;
		return 0;
	}
	if(x1<x2&&y1<y2){
		if(x2-x1<=yE&&y2-y1<=sN){
			cout<<(x2-x1)+(y2-y1);
			return 0;
		}else cout<<-1;
		
	}else if(x1>x2&&y1<y2){
		if(x1-x2<=zW&&y2-y1<=sN){
			cout<<(x1-x2)+(y2-y1);
			return 0;
		}else cout<<-1;
	}else if(x1<x2&&y1>y2){
		if(x2-x1<=yE&&y1-y2<=xS){
			cout<<(x2-x1)+(y1-y2);
			return 0;
		}else cout<<-1;
	}else if(x1>x2&&y1>y2){
		if(x1-x2<=zW&&y1-y2<=xS){
			cout<<(x2-x1)+(y1-y2);
			return 0;
		}else cout<<-1;		
	}
}