freeCodeCamp/curriculum/challenges/portuguese/08-coding-interview-prep/project-euler/problem-328-lowest-cost-sea...

3.0 KiB

id challengeType title videoUrl localeTitle
5900f4b41000cf542c50ffc7 5 Problem 328: Lowest-cost Search Problema 328: Pesquisa de custo mais baixo

Description

Estamos tentando encontrar um número oculto selecionado do conjunto de inteiros {1, 2, ..., n} fazendo perguntas. Cada número (pergunta) que pedimos tem um custo igual ao número pedido e obtemos uma das três respostas possíveis: "Seu palpite é menor do que o número oculto", ou "Sim, é isso!" Ou "Seu palpite é maior que o número oculto ". Dado o valor de n, uma estratégia ótima minimiza o custo total (ou seja, a soma de todas as perguntas feitas) para o pior caso possível. Por exemplo

Se n = 3, o melhor que podemos fazer é obviamente perguntar o número "2". A resposta nos levará imediatamente a encontrar o número oculto (a um custo total = 2).

Se n = 8, podemos decidir usar um tipo de estratégia de "pesquisa binária": nossa primeira pergunta seria "4" e se o número oculto for maior que 4, precisaremos de uma ou duas perguntas adicionais. Deixe nossa segunda pergunta ser "6". Se o número escondido ainda for maior que 6, precisaremos de uma terceira pergunta para discriminar entre 7 e 8. Assim, nossa terceira pergunta será "7" e o custo total para esse cenário de pior caso será 4 + 6. + 7 = 17.

Podemos melhorar consideravelmente o custo do pior caso para n = 8, fazendo "5" como nossa primeira pergunta. Se nos disserem que o número oculto é maior que 5, nossa segunda pergunta será "7", então saberemos com certeza qual é o número oculto (para um custo total de 5 + 7 = 12). Se nos disserem que o número oculto é menor que 5, nossa segunda pergunta será "3" e se o número oculto for menor que 3, nossa terceira pergunta será "1", dando um custo total de 5 + 3 + 1 = 9 Desde 12> 9, o custo de pior caso para esta estratégia é 12. Isso é melhor do que o que alcançamos anteriormente com a estratégia de "pesquisa binária"; também é melhor ou igual a qualquer outra estratégia. Então, de fato, acabamos de descrever uma estratégia ótima para n = 8.

Seja C (n) o pior custo possível alcançado por uma estratégia ótima para n, como descrito acima. Assim, C (1) = 0, C (2) = 1, C (3) = 2 e C (8) = 12. Similarmente, C (100) = 400 e C (n) = 17575.

Encontre C (n).

Instructions

Tests

tests:
  - text: <code>euler328()</code> deve retornar 260511850222.
    testString: 'assert.strictEqual(euler328(), 260511850222, "<code>euler328()</code> should return 260511850222.");'

Challenge Seed

function euler328() {
  // Good luck!
  return true;
}

euler328();

Solution

// solution required