Как найти строку с максимальным числом 1 в матрице - PullRequest
0 голосов
/ 22 октября 2018

У меня есть матрица с логическими значениями:

require 'matrix'
m1 = Matrix[[0,1,1,1],[0,0,1,1],[1,1,1,1],[0,0,0,0]]

Я хочу найти строку с максимальным числом 1 с.Кто-нибудь может мне помочь?

Ответы [ 3 ]

0 голосов
/ 22 октября 2018

Оптимизированное решение: - Начните проверку с верхнего правого угла и двигайтесь влево от матрицы, пока не получите 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

0 голосов
/ 22 октября 2018
m1.row_vectors.max_by(&:sum)
  #=> Vector[1, 1, 1, 1]

или

m1.to_a.max_by(&:sum)
  #=> [1,1,1,1]

в зависимости от требований.

0 голосов
/ 22 октября 2018

Самый простой подход, вероятно, это

m1.row_vectors.max_by { |e| e.count(1) }
#=> Vector[1, 1, 1, 1]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...