请问23课后作业这套代码的 实现原理是什么
matrix = [,,
]
row = len(matrix)
col = len(matrix)
min_row = * row
max_col = * col
# 遍历矩阵中的每一个元素
# 找到每行中最小的元素,并将它们存放到列表min_row中
# 找到每列中最大的元素,并将它们存放到列表max_col中
for i in range(row):
for j in range(col):
min_row = min(matrix, min_row)
max_col = max(matrix, max_col)
# 遍历矩阵中的每一个元素
# 判断是否同时满足“同一行的所有元素中最小”和“同一列的所有元素中最大”
for i in range(row):
for j in range(col):
if matrix == min_row and matrix == max_col:
print(matrix) 本帖最后由 jackz007 于 2022-10-9 16:37 编辑
首先,应该确定,如果 matrix 没有重复元素,那么,满足行内最小、列内最大这样条件的元素一定存在,而且,只有一个。
matrix 有 3 行 3 列,列表 min_row、max_col 中各保存了 3 个元素,循环遍历这两个列表,如果它们存在相同元素,例如,min_row == max_col 那就说明元素 matrix 是矩阵 matrix 中满足行内最小同时列内最大的那个元素。
运行一下这个代码,看看结果,也许能帮助你理解原理:
matrix = [,,]
d = ) for i in range(len(matrix))] # d = matrix 行最小值列表
e = for i in range(len(matrix))]) for j in range(len(matrix))] # e = matrix 列最大值列表
for i in range(len(d)):
for j in range(len(e)):
if d == e :
print('matrix[%d , %d] = %d' % (i , j , matrix))
break
print()
print("reference infomation : ")
print('=' * 30)
print('matrix :' , matrix)
for i in range(1 , len(matrix)) : print(' ' * 8 , matrix)
print()
print(' d :' , d)
print(' e :' , e)
运行实况:
D:\\Python>python x.py
matrix = 66
reference infomation :
==============================
matrix :
d :
e :
D:\\Python>
核心还是去找行列坐标,如果对于循环不了解可以打个print或者计数器,方便观察。
#原嵌列表
matrix = [,
,
]
#获取row行数,获取col列数
row = len(matrix)
col = len(matrix)
# print(f'low:{row}')
# print(f'col:{col}')
min_row = * row
max_col = * col
# print(f'min_row:{min_row}')
# print(f'max_col:{max_col}')
# 遍历矩阵中的每一个元素
# 找到每行中最小的元素,并将它们存放到列表min_row中
# 找到每列中最大的元素,并将它们存放到列表max_col中
i1=0
j1=0
for i in range(row):
print(f'行数{i1},{i}')
for j in range(col):
print(f'下标{i},{j}')
print(f'比较的两数为:{matrix},{min_row}')
min_row = min(matrix, min_row)
max_col = max(matrix, max_col)
j1 +=1
i1 += 1
print(min_row)
print(max_col)
# 遍历矩阵中的每一个元素
# 判断是否同时满足“同一行的所有元素中最小”和“同一列的所有元素中最大”
for i in range(row):
for j in range(col):
print(matrix,min_row,max_col)
if matrix == min_row and matrix == max_col:
print(matrix)
页:
[1]