• CF453-A Visiting a Friend (dfs)


    题意:给你一个数轴,从0开始出发,只能通过传送站转移,然后问能否通过给定的传送站转移到终点
    传送站给出坐标,以及其能够移动的范围
    思路:我们可以想到dfs来搜索路径。由于每个传送站可以进行转移,即记录站点位置(转移时只能这样),然后再
    用vis记录是否访问(避免重复),到达终点标记为成功
    记录上由于范围较小所以直接用下标表示位置
    刚开始WA了一发,然后就怀疑输入有坑,估计是某个点的范围被一直改变。所以后面就记录pos更大时才修改

    #include <cstdio>
    #include <cstring>
    #include <iostream>
    #include <cmath>
    #include <algorithm>
    using namespace std;
    int vis[150];
    int pos[150];
    int n,m;
    int flag;
    void dfs(int p){
        vis[p] = 1;
        if(p==m) {flag = 1; return;}
        for(int i=p+1;i<=pos[p];i++){
            if(i>m||vis[i]||!pos[i]) continue;//超出边界,已被访问,没有传送点
            dfs(i);
        }
    }
    int main(){
        while(cin>>n>>m){
            int tmp,tmp1;
            memset(pos,0,sizeof(pos));
            for(int i = 0;i<n;i++){
                cin>>tmp;
                cin>>tmp1;
                if(tmp1>pos[tmp]) pos[tmp] = tmp1;
            }
            pos[m] = 1; 
            memset(vis,0,sizeof(vis));
            flag = 0;
            dfs(0);
            if(flag) cout<<"YES"<<endl;
            else cout<<"NO"<<endl;
        }
    }
  • 相关阅读:
    网络抓包工具使用
    JAVA 原子操作类
    guava collection/cache初探
    MiniGUI
    Cookie
    System V IPC
    SQLite交叉编译
    NCurses交叉编译
    双向循环链表
    VMware安装Windows Server 2008
  • 原文地址:https://www.cnblogs.com/Tianwell/p/11327552.html
Copyright © 2020-2023  润新知