新手问题 鞍点定位 -- 请用 Ruby 编写

levan · 2012年06月14日 · 最后由 Levan 回复于 2012年06月14日 · 3028 次阅读

Description 在一个二维矩阵中,如果某个位置的数值是该行最大值,同时也是该列最小值,我们则称该位置是矩阵的鞍点。鞍点在工业控制,建筑力学等方面有着广泛应用。鞍点可能有多个,也可能没有。

Input 第一行输入 T 表示有 T 个测试实例 第二行输入两个参数 A 和 B,分别表示矩阵的行数和列数 第三行输入二维矩阵的数据,假定数据都是正整数 以此类推输入下个实例

Output 输出鞍点所在的行号和列号,行号和列号都是从 0 开始编号。 如果存在多个鞍点,输出行号和列号最小的鞍点。如果不存在鞍点,输出 -1 -1

Sample Input:

2 
3 3 
11 77 33 
44 66 55 
22 88 99 
4 2 
22 11 
33 44 
55 66 
11 88

Sample Output:

1 1 
-1 -1

代码一行能搞定么?

匿名 #2 2012年06月14日
arr = [[11,77,33],[44,66,55],[22,88,99]]
flag = true
arr.each_with_index{|a,i|
  if a.max == (ac = arr.map{|n| n[i]}).min
    puts "#{a.find_index a.max},#{ac.find_index a.max}"
    flag = false
  end
}
puts "-1,-1" if flag

压缩一下能 3 行吧。。不过写这么长也没压缩的必要了。。

需要 登录 后方可回复, 如果你还没有账号请 注册新账号