求矩阵中元素的最长对角线-python
Find the longest diagonal of an element in a matrix-python
我对编程还很陌生,所以我的问题可能看起来很幼稚。
我需要一个给定矩阵的函数:
m=[['2','3','2','4','2','2','1']
['5','2','6','2','7','2','2']
['5','3','9','4','2','6','8']]
-找到元素'2'的最长对角线(不必从第一行开始):
['2','2','2']
——输出对角线第一个元素在矩阵中的位置:
m[0][2]
谢谢
result=[0,0]
maxdiag = 0
for i in range (0, len(m)):
for j in range (0, len(m[i])):
k = 0;
while (i+k < len(m) and j+k < len(m[0]) and m[i+k][j+k] == '2'):
k+=1;
if (k > maxdiag):
maxdiag = k;
result[0]=i;
result[1]=j;
坐标存储在result
。
在我看来,这是经验解决方案。
遍历矩阵,当您找到 '2'
时,遍历 "diagonally" 将迭代器 k
添加到 i
和 j
(例如,如果您在 m[1][1]
上找到 '2'
,您的循环将在 m[2][2]
、m[3][3]
等上迭代),并且当您找到比当前对角线更高的对角线时,替换结果中的坐标(抱歉我的英语不好)。
我对编程还很陌生,所以我的问题可能看起来很幼稚。 我需要一个给定矩阵的函数:
m=[['2','3','2','4','2','2','1']
['5','2','6','2','7','2','2']
['5','3','9','4','2','6','8']]
-找到元素'2'的最长对角线(不必从第一行开始):
['2','2','2']
——输出对角线第一个元素在矩阵中的位置:
m[0][2]
谢谢
result=[0,0]
maxdiag = 0
for i in range (0, len(m)):
for j in range (0, len(m[i])):
k = 0;
while (i+k < len(m) and j+k < len(m[0]) and m[i+k][j+k] == '2'):
k+=1;
if (k > maxdiag):
maxdiag = k;
result[0]=i;
result[1]=j;
坐标存储在result
。
在我看来,这是经验解决方案。
遍历矩阵,当您找到 '2'
时,遍历 "diagonally" 将迭代器 k
添加到 i
和 j
(例如,如果您在 m[1][1]
上找到 '2'
,您的循环将在 m[2][2]
、m[3][3]
等上迭代),并且当您找到比当前对角线更高的对角线时,替换结果中的坐标(抱歉我的英语不好)。