"Supongamos que desea construir un panel sólido a partir de filas de bloques Lego de 4 × 1 y 6 × 1. Para la resistencia estructural, los espacios entre los bloques nunca deben alinearse en filas adyacentes. Como ejemplo, el 18 × 3 El panel que se muestra a continuación no es aceptable, porque los espacios entre los bloques en las dos filas superiores se alinean.¿Alguien ha visto un rompecabezas de programación similar a esto?
Hay 2 formas de construir un panel de 10 × 1, 2 formas de construir un panel de 10 × 2, 8 formas de construir un panel de 18 × 3 y 7958 maneras de construir un panel de 36 × 5.
¿Cuántas formas diferentes hay para construir un panel de 64 × 10? La respuesta se ajustará a un entero de 64 bits con signo. programa para calcular la respuesta. Su programa debe ejecutarse muy rápido, sin duda, no debería tomar más de un minuto, incluso en un máquina más vieja. Háganos saber el valor que calcula su programa, cuánto tiempo llevó su programa calcular ese valor y qué tipo de máquina lo ejecutó. Incluya el código fuente del programa como un archivo adjunto. "
Recientemente me dieron un acertijo de programación y he estado trabajando duro tratando de resolverlo. Escribí un código usando C++ y sé que el número es enorme ... mi programa se ejecutó durante unas horas antes de que decidiera solo para detenerlo porque el requerimiento era de 1 minuto de tiempo de ejecución incluso en una computadora lenta. ¿Alguien ha visto un rompecabezas similar a esto? Han pasado unas semanas y no puedo entregar esto más, pero esto realmente ha estado molestando que no pude resolverlo correctamente. ¿Alguna sugerencia sobre algoritmos para usar? O tal vez formas posibles de resolverlo fuera de la caja. A lo que recurrí fue a hacer un programa que construyó cada posible "capa" de 4x1 y 6x1 bloques para hacer una capa de 64x1. Eso resultó ser alrededor de 3300 capas diferentes. Luego hice que mi programa se ejecutara y los apilara en todos los posibles muros de 10 capas que no tienen grietas alinearse ... como puede ver, esta solución tomaría mucho, mucho, mucho tiempo. Entonces, obviamente, la fuerza bruta no parece ser efectiva para resolver esto dentro de la restricción de tiempo. Cualquier sugerencia/idea sería muy apreciada.
¿Se supone que hay imágenes aquí? No veo ninguno. Supongo que es porque no puede publicar imágenes a menos que tenga más de 15 Rep. – gnovice
El particionamiento de enteros podría ser parte de la solución: http://en.wikipedia.org/wiki/Integer_partition – outis
Creo que su 3,300 la cifra está mal, está más cerca de los 47,000 según un programa que preparé. Quizás no tomaste en cuenta el orden. – paxdiablo