【题解】AT5227

思路

我们可以将这一个矩阵转化为一个一维数组。
之后输入的 n 个数中,有相同的,就打上标记。
由于矩阵是 3 * 3 的,所以我们可以用 \(\Theta(1)\) 的时间复杂度进行判断。

Code

#include <cstdio>
const int MAXN = 15;
int n;
int a[MAXN];
bool flag, v[MAXN];
int main() {
	for (int i = 1; i <= 9; i++)
		scanf("%d", &a[i]);
	scanf("%d", &n);
	for (int i = 1; i <= n; i++) {
		int x;
		scanf("%d", &x);
		for (int j = 1; j <= 9; j++)
			if (x == a[j])
				v[j] = 1;
	}
	if ((v[1] && v[2] && v[3]) || (v[4] && v[5] && v[6]) || (v[7] && v[8] && v[9]))
		flag = 1;
	if ((v[1] && v[4] && v[7]) || (v[2] && v[5] && v[8]) || (v[3] && v[6] && v[9]))
		flag = 1;
	if ((v[1] && v[5] && v[9]) || (v[3] && v[5] && v[7]))
		flag = 1;
	printf("%s", flag ? "Yes" : "No");
	return 0;
}
posted @ 2022-07-27 21:24  zhou_ziyi  阅读(50)  评论(0)    收藏  举报