3.1 KiB
id | challengeType | title | videoUrl | localeTitle |
---|---|---|---|---|
5900f4b41000cf542c50ffc7 | 5 | Problem 328: Lowest-cost Search | Problema 328: Búsqueda de menor costo |
Description
Si n = 3, lo mejor que podemos hacer es, obviamente, pedir el número "2". La respuesta nos llevará inmediatamente a encontrar el número oculto (a un costo total = 2).
Si n = 8, podríamos decidir utilizar un tipo de estrategia de "búsqueda binaria": nuestra primera pregunta sería "4" y si el número oculto es mayor que 4 necesitaremos una o dos preguntas adicionales. Deje que nuestra segunda pregunta sea "6". Si el número oculto aún es mayor que 6, necesitaremos una tercera pregunta para discriminar entre 7 y 8. Por lo tanto, nuestra tercera pregunta será "7" y el costo total para este escenario en el peor de los casos será 4 + 6 + 7 = 17.
Podemos mejorar considerablemente el costo del caso más desfavorable para n = 8, al preguntar "5" como nuestra primera pregunta. Si se nos dice que el número oculto es mayor que 5, nuestra segunda pregunta será "7", entonces sabremos con certeza cuál es el número oculto (por un costo total de 5 + 7 = 12). Si nos dicen que el número oculto es menor que 5, nuestra segunda pregunta será "3" y si el número oculto es menor que 3, nuestra tercera pregunta será "1", lo que da un costo total de 5 + 3 + 1 = 9. Desde 12> 9, el costo más desfavorable para esta estrategia es 12. Eso es mejor que lo que hemos logrado anteriormente con la estrategia de "búsqueda binaria"; También es mejor o igual que cualquier otra estrategia. Entonces, de hecho, acabamos de describir una estrategia óptima para n = 8.
Sea C (n) el costo más desfavorable alcanzado por una estrategia óptima para n, como se describe anteriormente. Por lo tanto, C (1) = 0, C (2) = 1, C (3) = 2 y C (8) = 12. De manera similar, C (100) = 400 y C (n) = 17575.
Encuentra C (n).
Instructions
Tests
tests:
- text: <code>euler328()</code> debe devolver 260511850222.
testString: 'assert.strictEqual(euler328(), 260511850222, "<code>euler328()</code> should return 260511850222.");'
Challenge Seed
function euler328() {
// Good luck!
return true;
}
euler328();
Solution
// solution required