第一行输入一个整数
代表矩阵大小。
此后
行,每行输入一个长度为
的、仅由
和
构成的字符串代表矩阵。保证输入数据中至少存在一个满足条件的正方形。
输出四行,每行两个整数,代表正方形四个顶点所在的单元格。我们使用
表示网格中从上往下数第
行和从左往右数第
列的单元格,从
开始编号。
如果存在多个解决方案,您可以输出任意一个,系统会自动判定是否正确。注意,自测运行功能可能因此返回错误结果,请自行检查答案正确性。
8 *####*** *####*** *####*** *#####** ******** ***#***# ******** *****#**
1 2 4 2 1 5 4 5
该样例如图所示。特别的,橙色正方形的边长为
,比粉色正方形小。
8 *#*#**** *****#** ******#* *#****** #******* ****#*** ******** ********
1 2 2 6 5 1 6 5
该样例如图所示。橙色正方形的边长为
,粉色正方形的边长为
。
# 妈的c++ 四层循环的算法只要半秒,python两层循环的两秒内完成不了 n = int(input()) tmp = [] for i in range(n): tmp.append(input()) arr = [] for i in range(n): for j in range(n): if tmp[i][j]=="#": arr.append((i,j)) M = 0 res = [] for i in range(len(arr)-1): x1,y1 = arr[i] for j in range(i+1,len(arr)): x2,y2 = arr[j] dx,dy = x2-x1 ,y2-y1 x3,y3 = x1-dy,y1+dx if (x3,y3) in arr : x4,y4 = x2-dy,y2+dx if (x4,y4) in arr: LEN = dx**2 + dy **2 if M < LEN: M = LEN res = [(x1 + 1, y1 + 1), (x2 + 1, y2 + 1), (x3 + 1, y3 + 1), (x4 + 1, y4 + 1)] for x,y in res: print(x,y)