题解 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;
}
posted @ 2021-10-25 21:20  Farkas_W  阅读(48)  评论(0编辑  收藏  举报