zoukankan      html  css  js  c++  java
  • div3--C. Pipes

    题目链接:https://codeforces.com/contest/1234/problem/C

    题目大意:根据规则,判断是否可以从左上走到右下,1,2,3,4,5,6分别对应题干给的图片,所以1,2是一类,3,4,5,6是一类。

    思路:dfs,爆搜,用一个bool变量记录当前水流的 方向, 当遇到第一类时,如果当前是水平方向直接往右。当遇到第二类时,如果当前是竖直方向往右,如果是水平方向,则改变楼层;

    AC代码:

    #include<bits/stdc++.h>
    using namespace std;
    int t;
    bool flag=false ;
    string s1,s2;
    void dfs(int x,int y,int a){
        if(flag) return ;
        if(x==2&&y==t){
            flag=1;
            return ;
        }
        if(x==1){
            if((s1[y]=='1'||s1[y]=='2')&&a) dfs(x,y+1,1);
            else if((s1[y]=='3'||s1[y]=='4'||s1[y]=='5'||s1[y]=='6')&&a)  dfs(x+1,y,0);
            else if((s1[y]=='3'||s1[y]=='4'||s1[y]=='5'||s1[y]=='6')&&!a) dfs(x,y+1,1);
        }
        else {
            if((s2[y]=='1'||s2[y]=='2')&&a==1)    dfs(x,y+1,1);
            else if((s2[y]=='3'||s2[y]=='4'||s2[y]=='5'||s2[y]=='6')&&a==1)  dfs(x-1,y,0);
            else if((s2[y]=='3'||s2[y]=='4'||s2[y]=='5'||s2[y]=='6')&&!a==1) dfs(x,y+1,1); 
        }
    }
    void solve(){
        flag=false ;
        cin>>t;
        cin>>s1>>s2;
        dfs(1,0,1);
        if(flag) cout<<"Yes"<<endl;
        else cout<<"No"<<endl; 
    }
    int main(){
        int t;
        cin>>t;    
        while(t--) solve();
        return 0;
    }
    View Code
  • 相关阅读:
    spring cloud项目搭建
    获取iframe的window对象
    数学杂谈 #7
    [AGC023D] Go Home
    JOISC 2021 部分题解
    [NOI2017]泳池
    [NOI2016] 循环之美
    [NOI2016] 优秀的拆分
    [LG P3676]小清新数据结构题
    [ARC113F]Social Distance
  • 原文地址:https://www.cnblogs.com/Accepting/p/11632808.html
Copyright © 2011-2022 走看看