Types of pipes
Examples of connected pipes
Let's describe the problem using some example:
The first example input
And its solution is below:
题意:
从左上角入,从右下角出,每一个图形可以无数次旋转90度。
思路:
每个图形都只有一个入口和一个出口,所以从左上角到右下角最多只有一条路。
#include<bits/stdc++.h>
#define ll long long
using namespace std;
char a[2][200010];
int main(){
int T;
scanf("%d",&T);
while(T--){
int n,f=0,g=0; //f=0是在上层,f=1是在下层;
scanf("%d",&n);
scanf("%s",a[0]);
scanf("%s",a[1]);
n--;
for(int i=0;i<n;i++){
if(f==0){
if(a[0][i]!='1'&&a[0][i]!='2'){
if(a[1][i]!='1'&&a[1][i]!='2')f=1;
else{
g=1;break;
}
}
}else{
if(a[1][i]!='1'&&a[1][i]!='2'){
if(a[0][i]!='1'&&a[0][i]!='2')f=0;
else{
g=1;break;
}
}
}
}
if(g){
printf("NO\n");
}else{
if(f==0){
if(a[0][n]!='1'&&a[0][n]!='2'&&a[1][n]!='1'&&a[1][n]!='2')g=0;
else g=1;
}else{
if(a[1][n]=='1'||a[1][n]=='2')g=0;
else g=1;
}
if(g)printf("NO\n");
else printf("YES\n");
}
}
return 0;
}