先进行排序
对每种情况进行分类讨论
注意下形成对角线的的两种方式
#include <iostream>
#include<algorithm>
using namespace std;
int main() {
ios::sync_with_stdio(false);
cin.tie(nullptr);
int n,x1,y1,x2,y2;
cin>>n>>x1>>y1>>x2>>y2;
if(x1>x2){swap(x1,x2),swap(y1,y2);}// 先排个序
if(x1==x2&&y1!=y2)cout<<"NO";//同行不同列
else if(x1==x2&&y1==y2)cout<<"YES";//相同
else if(y1==y2)cout<<"NO";//同列不同行
else{//都不同的情况
if((x1==2&&y1==n)||(x2==2&&y2==n))cout<<"NO";//如果有一个在终点
else if(y1-y2==1)cout<<"YES";//上边的行列更大
else if(y1-y2==-1&&n-y2!=1)cout<<"YES";
else cout<<"NO";//相差太多 以及下面行列更大
}
return 0;
}

京公网安备 11010502036488号