Member 13229041 Ответов: 2

Как быстро вычислить цифры?


Всем привет, недавно у меня возникли некоторые проблемы с написанием кодового задания о быстром угадывании чисел. Программа такова: пользователь случайным образом пишет четырехзначное число (но компьютер не знает, сколько), а затем компьютер пользователю задает вопросы, чтобы определить число, конкретно какое содержание не ограничено. Но на вопрос пользователя на компьютере можно ответить только "да"или " нет". Но количество компьютерных вопросов как можно меньше. Итак, этот вопрос отличается от "быков и коров".Но мне нужно около 14 раз определить это число, и я не могу найти решение с меньшим количеством вопросов, пожалуйста, помогите мне, будьте благодарны.

Что я уже пробовал:

Чтобы решить эту проблему, я пытаюсь использовать метод бинарного поиска для написания фрагмента кода. Конкретное описание состоит в том, чтобы от первого до четвертого бит за битом определить соответствующее число, каждое число в 0-9 с помощью двоичного метода поиска определить, так что в среднем 14 раз определить четыре цифры.

2 Ответов

Рейтинг:
2

Patrice T

Цитата:
Но мне нужно примерно 14 раз определить это число, и я не могу найти решение с меньшим количеством вопросов

Потому что нет более быстрого решения.
Дихотомия-это самый быстрый способ решить вашу проблему.
У вас есть 10000 возможных чисел, а степени 2 равны 2^13= 8192 и 2^14= 16384.
Вот откуда берутся ваши 14.


CPallini

5.

Patrice T

Спасибо еще раз.

Рейтинг:
1

OriginalGriff

Вы можете сделать это в 13 шагов для 4 цифр, и вопрос каждый раз один и тот же: меньше ли это половины текущего значения?
Т.е.
Начальный диапазон: 0000 - > 9999
Это меньше 5000?
Если да, то диапазон становится 0000-4999. Следующее предположение, что это "меньше, чем 2500?"
Если нет, диапазон становится 5000-9999. Следующее предположение, что это "меньше, чем 7500?"
Повторите, и через 13 шагов у вас будет одно значение.


CPallini

5.