Tamaño cuadrado máximo para un número desconocido dentro del rectángulo

Si tengo un conjunto de mosaicos (cuadrados) que pueden ser cualquier número y deben llenar un contenedor (rectángulo) de un tamaño desconocido, ¿cómo calculo el tamaño máximo de los mosaicos sin que ninguno se superponga?

Entonces, si tengo 2 mosaicos y el rectángulo es 100 * 100, entonces el tamaño máximo de mosaico es 50 * 50. Este también sería el tamaño máximo de mosaico si hubiera 3 o 4 mosaicos para este tamaño de rectanlgle, lo cual sucede ser un cuadrado en este ejemplo.

Si el rectanlge era 100 * 30 y tenía 2 fichas, el tamaño máximo del cuadrado sería 30 * 30, si tengo 4 fichas, el tamaño máximo sería 25 * 25.

¿Cómo puedo hacer esto programáticamente sin acaparar el procesador pasando por todas las combinaciones posibles?

Intento resumir un poco mejor, tengo un:

rectángulo / cuadro delimitador que necesito llenar tanto como sea posible sin que se superpongan los mosaicos.

Sé la altura y el ancho del rectángulo (pero esto puede cambiar durante el tiempo de ejecución).

Tengo un número X de mosaicos (esto puede cambiar en el tiempo de ejecución), estos son cuadrados.

Ninguno de los mosaicos debe superponerse, ¿cuál es el tamaño máximo que puede tener cada mosaico? Todos deben ser del mismo tamaño.

Respuestas a la pregunta(20)

Su respuesta a la pregunta