Pensemos en las posibles soluciones, comenzando por la solución más simple pero más lenta primero. Por ejemplo, puede probar todas las posiciones posibles para cada cuadro. Esto no es especialmente difícil, pero esta solución tomaría un tiempo exponencial en el tamaño y el número de cajas. Sin embargo, puede hacer esto más rápido si observa que cada cuadro nuevo podría tocar una superficie existente, mejorando así la solución al tiempo exponencial en el número de cuadros. Si piensa más en ello, puede mejorar aún más esta solución aprovechando la simetría y la poda.
Sin embargo, en última instancia, no existe una solución conocida que funcione mejor que el tiempo exponencial: el problema es NP completo. De hecho, como se describe en mi respuesta anterior a ¿Cómo podemos cubrir un área MxN con un costo mínimo, a partir de un conjunto de mosaicos que tienen diferentes dimensiones y diferentes costos ?, los problemas de empaque generalmente son NP-completos incluso en 2D. Aunque los problemas de NP completo pueden parecer intratables, aún puede ser interesante experimentar con varios métodos: simplemente comience a codificar y vea a dónde lo lleva.
- Trabajo muy duro para estudiar 13 horas al día durante más de 7 meses, pero todavía no puedo mejorar mi estructura de datos y habilidades de algoritmos, ¿qué debo hacer?
- Cómo usar la recursión de la cola de Fibonacci en C ++
- ¿Cuáles son algunos diseños de clase mínima para el diseño de elevadores para la construcción de m pisos?
- ¿Cómo funciona el algoritmo de adsorción?
- ¿Es suficiente el conocimiento del tamiz de Eratóstenes y la factorización prima al preparar los concursos de programación?