我有一个带有布尔值的矩阵:
require 'matrix'
m1 = Matrix[[0,1,1,1],[0,0,1,1],[1,1,1,1],[0,0,0,0]]
我想找到最多1
个行。谁能帮我吗?
答案 0 :(得分:5)
最简单的方法可能是
m1.row_vectors.max_by { |e| e.count(1) }
#=> Vector[1, 1, 1, 1]
答案 1 :(得分:0)
最佳解决方案:-从右上角开始检查并遍历矩阵的左侧,直到得到1
。遇到0时,遍历矩阵并重复。
row = nil
j = m1.row_count - 1
(0...m1.row_count).each.with_index do |i|
while m1[i,j] == 1 do
row = i
j -= 1
end
end
puts row
假设:
1.行已排序。
2.它是nxn矩阵。
有关更多信息,请参见this
答案 2 :(得分:0)
m1.row_vectors.max_by(&:sum)
#=> Vector[1, 1, 1, 1]
或
m1.to_a.max_by(&:sum)
#=> [1,1,1,1]
取决于要求。