4.1 KiB
id | challengeType | title | videoUrl | localeTitle |
---|---|---|---|---|
5900f4b41000cf542c50ffc7 | 5 | Problem 328: Lowest-cost Search | Задача 328: поиск по минимальным затратам |
Description
Если n = 3, лучшее, что мы можем сделать, - это, очевидно, задать число «2». Ответ сразу заставит нас найти скрытое число (при общей стоимости = 2).
Если n = 8, мы можем решить использовать стратегию «двоичного поиска»: наш первый вопрос будет «4», а если скрытое число больше 4, нам понадобятся один или два дополнительных вопроса. Пусть наш второй вопрос будет «6». Если скрытое число еще выше 6, нам понадобится третий вопрос, чтобы различать от 7 до 8. Таким образом, наш третий вопрос будет «7», а общая стоимость этого наихудшего сценария составит 4 + 6 + 7 = 17.
Мы можем значительно улучшить наихудшие затраты для n = 8, задав «5» в качестве нашего первого вопроса. Если нам говорят, что скрытое число выше 5, наш второй вопрос будет «7», тогда мы точно знаем, что такое скрытое число (общая стоимость 5 + 7 = 12). Если нам говорят, что скрытое число меньше 5, наш второй вопрос будет «3», и если скрытое число будет ниже 3, наш третий вопрос будет «1», что даст общую стоимость 5 + 3 + 1 = 9. С 12> 9 наихудшая стоимость для этой стратегии равна 12. Это лучше, чем мы ранее достигали с помощью стратегии «бинарного поиска»; он также лучше или равен любой другой стратегии. Итак, на самом деле мы только что описали оптимальную стратегию для n = 8.
Пусть C (n) - наихудшая стоимость, достигаемая оптимальной стратегией для n, как описано выше. Таким образом, C (1) = 0, C (2) = 1, C (3) = 2 и C (8) = 12. Аналогично, C (100) = 400 и C (n) = 17575.
Найти C (n).
Instructions
Tests
tests:
- text: ''
testString: 'assert.strictEqual(euler328(), 260511850222, "<code>euler328()</code> should return 260511850222.");'
Challenge Seed
function euler328() {
// Good luck!
return true;
}
euler328();
Solution
// solution required