题解 CF1598A Computer Game

[ ext{题目大意} ]

(quad)一个 (2)(n) 列的网格图,起点在 ((1,1)),终点在 ((2,n)),标记为 (0) 的点可以走,不能走到标记为 (1) 的点,保证起点和终点可以走,一个点可以到达周围八个点(上下左右 (+) 沿斜线走),问是否可以从起点走到终点。

[ ext{思路} ]

(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;
}
原文地址:https://www.cnblogs.com/FarkasW/p/15463242.html