题解 CF1598A Computer Game
\[\text{题目大意}
\]
\(\quad\)一个 \(2\) 行 \(n\) 列的网格图,起点在 \((1,1)\),终点在 \((2,n)\),标记为 \(0\) 的点可以走,不能走到标记为 \(1\) 的点,保证起点和终点可以走,一个点可以到达周围八个点(上下左右 \(+\) 沿斜线走),问是否可以从起点走到终点。
\[\text{思路}
\]
\(\quad\)因为一个点可以到达周围八个点,显然只有同一列的两个方格都被标记了的时候就无法到达终点,其他情况就可以到达终点。
\(\quad\)注意:多组数据。
const int N=105;
int T,n;
char s[N];
bool b[2][N];
signed main()
{
T=read();
while(T--){
n=read();int flag=1;
scanf("%s",s+1);
for(re i=1;i<=n;i++)b[0][i]=(s[i]=='1');
scanf("%s",s+1);
for(re i=1;i<=n;i++)b[1][i]=(s[i]=='1');
for(re i=1;i<=n;i++)
if(b[1][i]&&b[0][i]){flag=0;break;}//同一列的两个方格都被标记了
puts(flag?"YES":"NO");
}
return 0;
}