第4章-22.求矩阵的局部极大值 (15分)
给定M行N列的整数矩阵A,如果A的非边界元素[大于相邻的上下左右4个元素,那么就称元素[是矩阵的局部极大值。本题要求给定矩阵的全部局部极大值及其所在的位置。
输入格式:
输入在第一行中给出矩阵A的行数M和列数N(3≤M,N≤20);最后M行,每行给出A在该行的N个元素的值。数字间以空格分隔。
输出格式:
每行按照“元素值 行号 列号”的格式输出一个局部极大值,其中行、列编号从1开始。要求按照行号递增输出;若同行有超过1个局部极大值,则该行按列号递增输出。若没有局部极大值,则输出“None 总行数 总列数”。
输入样例1:
4 5
1 1 1 1 1
1 3 9 3 1
1 5 3 5 1
1 1 1 1 1
输出样例1:
9 2 3
5 3 2
5 3 4
输入样例2:
3 5
1 1 1 1 1
9 3 9 9 1
1 5 3 5 1
输出样例2:
None 3 5
1 # 求矩阵的局部极大值 2 # Author: cnRick 3 # Time : 2020-3-30 4 matrix = [] 5 m,n = map(int,input().split()) 6 isNone = True 7 for i in range(m): #构建矩阵 8 thisLine = list(map(int,input().split())) 9 matrix.append(thisLine) 10 for row in range(1,m-1): 11 for col in range(1,n-1): 12 thisNum = matrix[row][col] 13 if thisNum > matrix[row][col-1] and thisNum > matrix[row][col+1]\ 14 and thisNum > matrix[row+1][col] and thisNum > matrix[row-1][col]: 15 print(matrix[row][col],row+1,col+1) 16 isNone = False 17 else: 18 if isNone == True: 19 print("None {:d} {:d}".format(m,n))