Данную конструкцию можно сверстать разными способами. Отсюда будут разные алгоритмы нахождения перегородок. И еще поясните - будут ли считаться общие с тремя блоками границы, скажем, на первой картинке между (красным+синим) и желтым.
В первом случае можно выделить 6 строк, две строки разбиты на два столбца равной ширины.
Во втором - 3 столбца, два разбиты на 2 строки, причем высота строк разная.
Возможен еще и третий вариант (возможен?), когда столбец в первой строке первого варианта сам разбит на строки и столбцы.
Короче, может Вы опишите в чем состоит практическая задача? И возможно есть более простое решение, потому что пока что решения в общем виде я не вижу.