Здесь быстрое решение только с одной строкой if или для каждой строки (не для каждого элемента): поскольку ваша матрица содержит только нули и единицы, сложите элементы каждой строки и затем верните индекс / индексы минимума / минимума.
PS: их добавление происходит очень быстро при использовании ассемблера inc или ++. Переменная в C ++
Редактировать: Здесь другая идея.Если вам действительно нужны матрицы 0/1, которые не превышают, скажем, 64 столбца, вы можете реализовать их в виде битовых матриц, используя обычные беззнаковые 64 целых числа.Устанавливая и удаляя соответствующий бит, вы можете определить запись (0 или 1).Эффект: проверка o (n) (дайте мне знать, если я ошибаюсь) следующим образом, где intXX - rowXX.Первая идея состоит в том, чтобы извлечь различные биты с помощью XOR
SET tmpA to int01
FOR I = 1 to n-1
XOR intI with intI+1, store result in tmpX
AND tmpX with intI, store result in tmpM
AND tmpX with intI+1, store result in tmpN
if (tmpN < tmpM)
SET tmpA to intI+1
ENDFOR
. Теперь tmpA должен содержать (последнюю) строку с наименьшим количеством нулей.
Cheers, G.