Установить массив с размерами элементов div (getAttribute (); 'width' и 'height',
получить размер окна браузера,
переберите массив div, возьмите div одинаковой высоты и добавьте ширину,
если вы доберетесь до ширины окна браузера, добавьте их, в противном случае возьмите ближайшее число и добавьте их.
В тот момент, когда у вас закончились элементы одинаковой высоты, найдите элементы одинаковой ширины и добавьте их по вертикали, если вы можете разместить их в оставшейся части окна. (Не забудьте уменьшить переменную окна браузера)
Это заполнит окно сверху слева и будет работать справа внизу.
Наконец, когда у вас остались только «нечетные» деления, просто добавьте наибольшее по ширине и высоте и пройдите вниз.