题解 | 至

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;
}

全部评论

相关推荐

点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务