题目链接
方法一:优先队列
算法思路
此题思路上并无太多难点,依次判断某一个方格的横向、垂直方向、对角线方向、反对角线方向上,以该方格开始连续的六个方格中黑方格的个数是否大于四个,若大于四个,则输出“Yes”;当所有方格都遍历完后还未输出“Yes”,则输出“No”。
实现代码
N = int(input())
ls = []
ans = False
for i in range(N):
ls.append(input())
for i in range(N):
for j in range(N):
if i + 5 < N:
cnt = 0
for k in range(6):
if ls[i + k][j] == '#':
cnt += 1
if cnt >= 4:
ans = True
if j + 5 < N:
cnt = 0
for k in range(6):
if ls[i][j + k] == '#':
cnt += 1
if cnt >= 4:
ans = True
if (j + 5 < N) and (i + 5 < N):
cnt = 0
for k in range(6):
if ls[i + k][j + k] == '#':
cnt += 1
if cnt >= 4:
ans = True
if (0 <= i - 5) and (j + 5 < N):
cnt = 0
for k in range(6):
if ls[i - k][j + k] == '#':
cnt += 1
if cnt >= 4:
ans = True
print('Yes' if ans else 'No')