暗点
由键盘输入一个3*4(3行4列)的数字矩阵,其中任意两个数字均不相同。要求输出该数字矩阵中的鞍点(即在矩阵行中最大,列中最小的数)。若没有鞍点,输出“NO”字样。 首先,我们可以使用一个二维列表来表示输入的数字矩阵。然后,我们需要遍历矩阵的每个元素,找到符合鞍点条件的元素。
具体步骤如下:
1. 首先,我们定义一个函数`find_saddle_point(matrix)`来实现鞍点的查找。该函数接受一个参数`matrix`,表示输入的数字矩阵。
2. 在`find_saddle_point`函数中,我们需要创建两个空列表`saddle_points`和`row_maxs`。
- `saddle_points`用于存储找到的鞍点。
- `row_maxs`用于存储每一行的最大值。
3. 使用一个嵌套循环来遍历矩阵的每个元素。外层循环控制行索引,内层循环控制列索引。
4. 在内层循环中,我们需要做以下几件事情:
- 判断当前元素是否是所在行的最大值,如果是,则将其添加到`row_maxs`中。
- 记录当前元素的列索引`col_index`。
5. 在外层循环中,遍历`row_maxs`中的元素,并通过比较判断是否为鞍点:
- 判断当前元素的所在列是否是该列的最小值,如果是,则将该鞍点`(row_index, col_index)`添加到`saddle_points`中。
6. 在函数结束后,判断`saddle_points`是否为空,如果为空,则输出"NO";否则,遍历输出所有的鞍点。
下面是完整的代码实现:
def find_saddle_point(matrix):
saddle_points = []
row_maxs = []
# 遍历矩阵的每个元素
for row_index, row in enumerate(matrix):
row_max = max(row)
row_maxs.append(row_max)
for col_index, num in enumerate(row):
# 判断是否为鞍点
if num == row_max and num == min(matrix for j in range(len(matrix))):
saddle_points.append((row_index, col_index))
if not saddle_points:
print("NO")
else:
for point in saddle_points:
print(f"Saddle point found at ({point}, {point})")
# 从键盘输入数字矩阵
matrix = []
for i in range(3):
row = []
for j in range(4):
num = input(f"Enter value for position ({i}, {j}): ")
row.append(int(num))
matrix.append(row)
# 查找鞍点并输出结果
find_saddle_point(matrix)
你可以按照提示依次输入数字矩阵的元素,然后程序将输出找到的鞍点坐标。如果没有鞍点,则输出"NO"。
以上回复来自 -- ChatGPT(FishC官方接口),如未能正确解答您的问题,请继续追问。
页:
[1]