题解 | 至
至
https://www.nowcoder.com/practice/36892cfda60144bb9eb8b20f2f61e0b6
直接分类讨论:题目不难哈,就只有数组两行,那么放障碍物也十分清晰。
三种情况:
第一种:坐标重合一定满足(无需障碍物)
第二种:两个坐标呈现左下右上45度(无需障碍物)
第三种:两个坐标呈现左上右下45度,这时需要障碍物将右边的第一个位置堵上,那右下位置只能走左上的路径了。
注意第三种情况要处理特殊情况,注意到题目坐标的范围可以到n,且障碍物不能放到终点。则特殊情况为右下已经在终点和离终点差向右一个位置,也就是和终点紧挨着。这两种不能满足题设。
最后附上代码
#include<bits/stdc++.h>
using namespace std;
#define int long long
void solve() {
int n;
cin>>n;
int x1,y1,x2,y2;
cin>>x1>>y1;
cin>>x2>>y2;
bool isTrue=false;
if(x1==x2&&y1==y2){
isTrue=true;
}
if(x1-x2==y2-y1){
isTrue=true;
}
if((x1-x2==y1-y2)&&(y1<n-1&&y2<n-1)){
isTrue=true;
}
if(isTrue){
cout<<"YES"<<endl;
}else{
cout<<"NO"<<endl;
}
}
signed main() {
ios::sync_with_stdio(false), cin.tie(0), cout.tie(0);
solve();
return 0;
}