wl2678287564 发表于 2022-10-9 13:37:46

请问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 15:13:48

本帖最后由 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>

wyh551202 发表于 2022-10-9 16:54:07

核心还是去找行列坐标,如果对于循环不了解可以打个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]
查看完整版本: 请问23课后作业这套代码的 实现原理是什么