El problema del sello postal es un acertijo matemático que pregunta cuál es el valor de franqueo más pequeño que no se puede colocar en un sobre, si la letra solo puede contener un número limitado de sellos, y estos pueden solo tiene ciertos valores nominales especificados.Valor máximo de estampillas en un sobre
Por ejemplo, supongamos que el sobre solo puede contener tres sellos, y los valores de sello disponibles son 1 centavo, 2 centavos, 5 centavos y 20 centavos. Entonces la solución es 13 centavos; ya que cualquier valor más pequeño se puede obtener con un máximo de tres sellos (por ejemplo, 4 = 2 + 2, 8 = 5 + 2 + 1, etc.), pero para obtener 13 centavos se deben usar al menos cuatro sellos.
¿Hay un algoritmo que, dada la cantidad máxima de sellos permitidos y el valor nominal de los sellos, uno puede encontrar el franqueo más pequeño que no se puede colocar en el sobre?
Otro ejemplo:
máximo de 5 sellos puede ser utilizado
valorado: 1, 4, 12, 21
El valor más pequeño que no puede ser alcanzado es 72. Valores 1-71 se pueden crear con una cierta combinación .
Al final probablemente usaré Java para codificar esto.
¿Hay alguna razón por la que el método de fuerza bruta para resolver este problema sea insuficiente? (¿O no sabes cuál es el método de la fuerza bruta?) –
@Mark: un método de fuerza bruta es lo que quiero, el trabajo de la mina no es óptimo, solo estoy buscando un método de fuerza bruta óptimo. –
Por ejemplo, con mi algoritmo, se tarda unos 4 minutos en una CPU rápida para resolver un problema de tamaño de sobre 10, donde tengo un amigo que pudo hacerlo en menos de 10 segundos. –