代码求助
本帖最后由 lu315702820 于 2024-8-14 20:48 编辑问题:请编程找出矩阵中的幸运数字。
说明:假设给定一个 m * n 的矩阵(矩阵中数值的取值范围是 0~1024,且各不相同),如果某一个元素的值在同一行的所有元素中最小,并且在同一列的所有元素中最大,那么该元素便是幸运数字。
假设给定的矩阵如下:
matrix = [,
,
]
那么输出结果应该是 66(同时满足同一行的所有元素中最小,并且在同一列的所有元素中最大)。
我编写的代码:
matrix = [,
,
]
row_min = * 3
col_max = * 3
for i in range(len(matrix)):
for j in range(len(matrix)):
if row_min > matrix:
row_min = matrix
else:
row_min = row_min
if col_max < matrix:
col_max = matrix
else:
col_max= col_max
for i in range(len(matrix)):
for j in range(len(matrix)):
if matrix == row_min and matrix == col_max:
print(matrix)
我的想法是循环的时候,可以逐个让初始化的col_max列表每一个元素去分别和matrix的每一列的元素进行比较:
比如 1)当i = 1, j =0, col_max = 0 < matrix = 36,所以col_max = 36
2)当 i = 1, j =1, col_max = 36 > matrix = 24,所以col_max = 36
3)当 i = 1, j =2, col_max = 36 < matrix = 76,所以col_max 被替换为76,
通过这样的方式也可以逐个将每一列最大的元素填入col_max中,但是输出不了结果;给出的标准答案我也看了,也理解,但是就是不知道为什么我尝试的这个方法做不出来。
哎呀,我怎么觉得你的代码看起来像一只被打翻的鱼呢?有些元素在找不到新家,结果都是空的。别担心,让我给你理理思路,把这个矩阵的“幸运数字”捞出来!
首先,我们要理解什么是幸运数字:它必须在同一行是最小的,在同一列是最大的。我们可以走两步走的策略。
1. **找出每一行的最小值**。
2. **找出每一列的最大值**。
3. **检查每个最小值是否同时也是对应列的最大值**。
下面是一个简单且幽默的Python代码示例来实现这个逻辑:
def lucky_numbers(matrix):
# 找到每一行的最小值
row_mins =
# 找到每一列的最大值
col_maxs = for i in range(len(matrix))) for j in range(len(matrix))]
lucky_numbers = []
# 检查每一行的最小值是否是对应列的最大值
for i in range(len(matrix)):
for j in range(len(matrix)):
if matrix == row_mins and matrix == col_maxs:
lucky_numbers.append(matrix)
return lucky_numbers
# 示例矩阵
matrix = [
,
,
]
print(lucky_numbers(matrix))
让我们来看看这段代码是如何灵活运作的:
1. 我们用列表推导式找出了每一行的最小值 `row_mins`(真是个聪明的家伙,谁说鱼脑子不好使呢?)。
2. 同样的方法,我们为每一列找最大的值 `col_maxs`。
3. 接着,我们遍历这个矩阵,检查行最小值和列最大值是否相等,如果相等,那它就是我们的“幸运数字”,就像是真正的钓鱼高手钓到了大鱼!
运行这段代码,你就能看到输出的“幸运数字”啦!希望这能帮助你更好地理解问题,代码也更清晰了!如果还有其他问题或想法,随时来问我哦!
以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。 def isRightData(data):
d = []
f = lambda x: True if all() else False
for i in data:
if type(i) is list and f(i) and 0 <= max(i) <= 1024 and len(i) == len(data):
d += i
else:
return False
return len(d) == len(set(d))
def findLuckyNum(data):
if not isRightData(data):
raise ValueError('请使用合法数据!')
data1 =
for row in data:
min_row_num = min(row)
min_index = row.index(min_row_num)
col = data1
max_col_num = max(col)
if min_row_num == max_col_num:
return min_row_num
else:
return None
if __name__ == '__main__':
matrix = [,
,
]
print(findLuckyNum(matrix))
先寻找每一行的最小元素,再找该列的数据进行比对
页:
[1]