
Сообщение от
valeriikozlov
Patch, что-то я в Вашем алгоритме не увидел:
это исходное условие.

его нужно отдельно описывать?

Сообщение от
valeriikozlov
наверное все-таки "оптимальный" (по крайней мере, по выделяемой памяти) это когда двумерный массив размером n*3 (можно и через структуры) и в котором каждая строка примерно такая:
5 6 3 - что означает 5-ый мужчина обоюдносимпатизирует 6-ой женщине и им обоим нравится 3-ий дом.
нет, "оптимальный" в данном случае - наилучший с точки зрения поставленной задачи.
а если говорить об оптимальности с точки зрения памяти/исполнения, то лучше списками делать не только симпатии, но и вообще всю структуру. и работать будет существенно быстрее.
кроме того, можно сделать алгоритм взвешивания группы решений, кэширование найденных пар-домов и т.д. и т.п. теории баз данных и параллельных вычислений позволяют много чего сделать.
я-же писал "простейший вариант".

или, скажем так, наиболее понятный человеку неподготовленному.