`
luoping0425
  • 浏览: 108839 次
  • 性别: Icon_minigender_2
  • 来自: 赣州
文章分类
社区版块
存档分类
最新评论

算法:矩阵鞍点

阅读更多

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++实现寻找矩阵鞍点的算法。 首先,我们需要了解基本的矩阵操作。在C++中,可以使用二维数组来表示矩阵。例如,一个2x2的矩阵可以表示为: ```cpp int matrix[2][2] = {{1, 2}, ...

    c++ 之鞍点,求矩阵鞍点

    在深入探讨C++中求解矩阵鞍点的问题之前,我们首先需要明确什么是“鞍点”。在数学和计算机科学中,鞍点(Saddle Point)是一个矩阵中的元素,它在所在行中是最大值,在所在列中是最小值。换句话说,如果矩阵A中存在...

    C++实现鞍点问题

    ### C++实现鞍点问题 #### 一、鞍点概念介绍 ...- **算法改进**:当前算法复杂度较高,可以探索更高效的算法来提高查找鞍点的速度。 以上是对给定C++代码的详细解析及鞍点问题的相关知识点说明。

    20151910042-刘鹏-15-综合训练 - 求矩阵鞍点1

    实验报告“20151910042-刘鹏-15-综合训练 - 求矩阵鞍点1”主要涉及了矩阵运算和编程技术,特别是使用C语言来寻找矩阵的鞍点。鞍点是指在矩阵的一个元素,其值在所在行中是最小的,同时在所在列中是最大的。这是一个...

    求一个矩阵鞍点程序代码C++

    对于初学者而言,掌握此类基本算法不仅有助于理解矩阵操作的核心思想,还能为后续更复杂的数据结构和算法学习打下坚实的基础。同时,通过实践练习此类题目,能够有效提升编程能力和逻辑思维能力。

    java矩阵找鞍点

    在编程领域,矩阵是一种二维数据...总的来说,寻找矩阵中的鞍点是一个涉及数组遍历、条件判断和可能的优化算法的问题。通过理解和掌握这些基本技巧,我们可以有效地在Java中实现这个功能,并根据实际需求进行性能优化。

    计算矩阵相乘的鞍点及相乘后的结果矩阵

    本主题聚焦于计算两个矩阵的乘积,并找出它们相乘后产生的结果矩阵中的鞍点。鞍点是指在矩阵的某一行中是最大值,而在同一列中是最小值的元素。 首先,我们要理解矩阵的概念。矩阵是由有序数组构成的矩形阵列,通常...

    算法设计中的有趣算法

    求取矩阵鞍点的算法通常涉及遍历矩阵的所有元素,对比其在同一行和同一列的位置。例如,我们可以使用双层循环,对每个元素检查其是否满足鞍点条件。对于大规模矩阵,可以优化搜索策略,如使用二分查找或动态规划来...

    c语言找鞍点

    下面是找鞍点的算法: 1. 首先,读取输入的repeat和n的值,repeat表示要进行多少次找鞍点的操作,n表示矩阵的维度。 2. 然后,使用两个循环来读取矩阵的元素。 3. 在读取完矩阵元素后,对每个元素进行判断,看看它...

    求矩阵中的鞍点

    求矩阵中的鞍点~~~~~~

    数据结构课程设计 鞍点等。。。

    鞍点是指在一个矩阵中,某个元素在其所在行中是最小的,同时在它所在的列中是最大的。解决这个问题的关键在于选择合适的矩阵存储方式。对于一个4行5列的矩阵,我们首先需要从键盘读取用户输入的20个数值来填充矩阵...

    鞍点------求最大值和最小值

    该程序采用C语言编写,用于寻找一个二维数组(模拟矩阵)中的鞍点,并输出这些鞍点的位置及其值。 1. **输入矩阵大小**:首先通过用户输入获取矩阵的行数(`n`)和列数(`m`)。 2. **读取矩阵数据**:接着使用两层...

    VB 寻找鞍点

    4. 记录鞍点:在遍历完成后,max_index将指向矩阵中的鞍点。如果在过程中没有找到鞍点,可以输出相应的提示。 5. 处理多鞍点情况:如果矩阵有多个鞍点,我们需要在每次找到新的鞍点时将其记录下来,例如,可以使用...

    C#语言编写的找鞍点程序

    鞍点在矩阵中是指一个元素,它在同行中是最小的,在同列中是最大的。在二维数组中,这样的元素通常具有特殊的性质,因此在某些算法和问题解决中很有用。C#是一种广泛用于开发Windows应用程序、Web服务和游戏的强大...

    鞍点问题 数据结构实验

    具体而言,若矩阵\( A \)中的某一元素\( A[i,j] \)是其所在第\( i \)行中的最小值,同时也是第\( j \)列中的最大值,则称该元素\( A[i,j] \)为矩阵\( A \)的一个鞍点。 ### 二、鞍点问题的解决思路 要找到鞍点,...

    求鞍点的程序代码

    在给定的Java代码中,我们看到一个名为`AD`的类,它实现了一个简单的算法来查找并打印出矩阵中的鞍点。首先,代码通过`Scanner`对象从用户那里获取矩阵的行数和列数。然后,创建一个二维整数数组`Array`来存储矩阵的...

    C++鞍点求解

    本题目要求通过编程方式,找到一个二维矩阵中的所有鞍点,并输出其位置及数值。若不存在鞍点,则输出“Not found!”。“鞍点”定义为一个矩阵中的元素,在其所在行中是最小值,在其所在列中是最大值。题目特别指出...

    找出一个二维数组的鞍点,即该位置上的元素在该行上最大、在列上最小(也可能没有鞍点)。Java

    以下是一个基本的Java代码示例来找出二维数组中的鞍点: ```java public class Main { public static void findSaddlePoint(int[][] matrix) { int rows = matrix.length; int columns = matrix[0].length; ...

    VB编写鞍点程序,感觉还不错噢

    鞍点,通常出现在矩阵或数组中,指的是在一个二维数组中,某一行中的最大值同时也是该列中的最小值的元素。在本例中,我们讨论的是找出一个3x4数组的鞍点,即在这个特定的矩阵中找到一个元素,它是其所在行的最大值...

Global site tag (gtag.js) - Google Analytics