10.12 求一个矩阵的鞍点,即在行上最小而在列上最大的点。
思路是:
1. 找出第i行上最小的数
2.检验该数是否是该列上最大的数
def saddle_point(arr)
# arr为m行n列,arr为矩政
m = arr.length
n = arr[0].length
b = [] # 存放每行最小点的行列数组
for i in 0...m # 每一行最小的点
# 行中找出最小的点
t = arr[i][0]
minij = 0
for j in 1...n
if arr[i][j] < t
t = arr[i][j]
minij = j
end
end
b << [i, minij]
puts "The row #{i}'s minimum is arr[#{i}][#{minij}]:#{arr[i][minij]}."
end
# 对数组b处理,b[m][2],b[m][0]:行数,b[m][1]:列数
c = []
b.each do |k|
row = b[i][0]
line = b[i][1]
t = arr[row][line]
# 判断该数是否是该列上最大的数
flag = 1
for i in 0...m
if t < arr[i][line]
flag = 0
break
end
end
c << [row, line, t] if flag == 1
end
c = c.uniq
if c.empty?
puts "Thers is no saddle point!"
return
else
c.each do |i|
row = i[0]
line = i[1]
t = arr[row][line]
puts "arr[#{row}][#{line}]:#{t} is saddle point."
end
return c
end
end
a1 =[[1,2,3,4],[1,5,8,6],[6,4,3,7],[6,3,4,1]]
c = saddle_point(a1)
puts "--------------------------------------"
a2 = [[1,2,3,4],[4,5,6,7],[8,9,10,11],[12,13,14,15]]
c = saddle_point(a2)
puts "--------------------------------------"
关于多个鞍点的,我实在是没有找出例子,不知有没有谁可以给我一个,验证一下。
有点难度,花了一个多小时吧。
明天去做新公司的体检,下周一入职。
分享到:
相关推荐
在本篇中,我们将深入探讨如何使用C++实现寻找矩阵鞍点的算法。 首先,我们需要了解基本的矩阵操作。在C++中,可以使用二维数组来表示矩阵。例如,一个2x2的矩阵可以表示为: ```cpp int matrix[2][2] = {{1, 2}, ...
在深入探讨C++中求解矩阵鞍点的问题之前,我们首先需要明确什么是“鞍点”。在数学和计算机科学中,鞍点(Saddle Point)是一个矩阵中的元素,它在所在行中是最大值,在所在列中是最小值。换句话说,如果矩阵A中存在...
### C++实现鞍点问题 #### 一、鞍点概念介绍 ...- **算法改进**:当前算法复杂度较高,可以探索更高效的算法来提高查找鞍点的速度。 以上是对给定C++代码的详细解析及鞍点问题的相关知识点说明。
实验报告“20151910042-刘鹏-15-综合训练 - 求矩阵鞍点1”主要涉及了矩阵运算和编程技术,特别是使用C语言来寻找矩阵的鞍点。鞍点是指在矩阵的一个元素,其值在所在行中是最小的,同时在所在列中是最大的。这是一个...
对于初学者而言,掌握此类基本算法不仅有助于理解矩阵操作的核心思想,还能为后续更复杂的数据结构和算法学习打下坚实的基础。同时,通过实践练习此类题目,能够有效提升编程能力和逻辑思维能力。
在编程领域,矩阵是一种二维数据...总的来说,寻找矩阵中的鞍点是一个涉及数组遍历、条件判断和可能的优化算法的问题。通过理解和掌握这些基本技巧,我们可以有效地在Java中实现这个功能,并根据实际需求进行性能优化。
本主题聚焦于计算两个矩阵的乘积,并找出它们相乘后产生的结果矩阵中的鞍点。鞍点是指在矩阵的某一行中是最大值,而在同一列中是最小值的元素。 首先,我们要理解矩阵的概念。矩阵是由有序数组构成的矩形阵列,通常...
求取矩阵鞍点的算法通常涉及遍历矩阵的所有元素,对比其在同一行和同一列的位置。例如,我们可以使用双层循环,对每个元素检查其是否满足鞍点条件。对于大规模矩阵,可以优化搜索策略,如使用二分查找或动态规划来...
下面是找鞍点的算法: 1. 首先,读取输入的repeat和n的值,repeat表示要进行多少次找鞍点的操作,n表示矩阵的维度。 2. 然后,使用两个循环来读取矩阵的元素。 3. 在读取完矩阵元素后,对每个元素进行判断,看看它...
求矩阵中的鞍点~~~~~~
鞍点是指在一个矩阵中,某个元素在其所在行中是最小的,同时在它所在的列中是最大的。解决这个问题的关键在于选择合适的矩阵存储方式。对于一个4行5列的矩阵,我们首先需要从键盘读取用户输入的20个数值来填充矩阵...
该程序采用C语言编写,用于寻找一个二维数组(模拟矩阵)中的鞍点,并输出这些鞍点的位置及其值。 1. **输入矩阵大小**:首先通过用户输入获取矩阵的行数(`n`)和列数(`m`)。 2. **读取矩阵数据**:接着使用两层...
4. 记录鞍点:在遍历完成后,max_index将指向矩阵中的鞍点。如果在过程中没有找到鞍点,可以输出相应的提示。 5. 处理多鞍点情况:如果矩阵有多个鞍点,我们需要在每次找到新的鞍点时将其记录下来,例如,可以使用...
鞍点在矩阵中是指一个元素,它在同行中是最小的,在同列中是最大的。在二维数组中,这样的元素通常具有特殊的性质,因此在某些算法和问题解决中很有用。C#是一种广泛用于开发Windows应用程序、Web服务和游戏的强大...
具体而言,若矩阵\( A \)中的某一元素\( A[i,j] \)是其所在第\( i \)行中的最小值,同时也是第\( j \)列中的最大值,则称该元素\( A[i,j] \)为矩阵\( A \)的一个鞍点。 ### 二、鞍点问题的解决思路 要找到鞍点,...
在给定的Java代码中,我们看到一个名为`AD`的类,它实现了一个简单的算法来查找并打印出矩阵中的鞍点。首先,代码通过`Scanner`对象从用户那里获取矩阵的行数和列数。然后,创建一个二维整数数组`Array`来存储矩阵的...
本题目要求通过编程方式,找到一个二维矩阵中的所有鞍点,并输出其位置及数值。若不存在鞍点,则输出“Not found!”。“鞍点”定义为一个矩阵中的元素,在其所在行中是最小值,在其所在列中是最大值。题目特别指出...
以下是一个基本的Java代码示例来找出二维数组中的鞍点: ```java public class Main { public static void findSaddlePoint(int[][] matrix) { int rows = matrix.length; int columns = matrix[0].length; ...
鞍点,通常出现在矩阵或数组中,指的是在一个二维数组中,某一行中的最大值同时也是该列中的最小值的元素。在本例中,我们讨论的是找出一个3x4数组的鞍点,即在这个特定的矩阵中找到一个元素,它是其所在行的最大值...