Самая оптимальная стратегия угадывания - дихотомия, то есть деление отрезка пополам и задавание вопроса больше? (или меньше?)
Например, загадано 50
Последовательность
32 64/2 больше
48 (32+64)/2 больше
56 (48+64)/2 меньше
52 (48+56)/2 меньше
50 (48+52)/2 попал
Теперь о задаче. Вопрос очень некорректный, если бы он звучал, как сколько попыток нужно сделать, чтобы угадать? , то решение простое
64 = 2^6, поэтому нужно 6 попыток 6 = 110b, значит 3 бит достаточно, чтобы в них разместить это количество попыток.
НО в задаче вопрос-то другой! Потому что в процессе отгадывания на каждом шаге нужно знать 1. Концы отрезка, 2. ответ
Концы это 6 бит и 6 бит +ответ 1 бит, итого 13 бит на шаг *6 = 78 бит. Можно ещё сократить немного, так как в последующем вопросе используется информация из предыдущего(один из концов интервала).
Уточни, что имеется в виду под фразой "какое количество информации", иначе задача неопределена и допускает многочисленные толкования.
Поделитесь своими знаниями, ответьте на вопрос:
Фрагмент документа (текст, заголовок, зображення, примітка), що посилається на інший об’єкт в самому документі або на інший об’єкт, який розміщено на окремому комп’ютері чи в комп’ютерній мережі – це…
#include <iostream>
#include <stdio.h>
#include <conio.h>
#include <time.h>
using namespace std;
int main()
{
srand(unsigned(time(NULL)));
int n;
cout << "n = ";
cin >> n;
int a[100];
cout << "Source massive \n";
for (int i = 0; i < n; i++)
{
a[i] = rand() % 21;
cout << a[i] << " ";
}
for (int i = 0; i < n - 1; i++)
for(int j = 0; j < n - i - 1; j++)
if (a[j] > a[j + 1])
{
int temp = a[j];
a[j] = a[j + 1];
a[j + 1] = temp;
}
cout << "\nSorted massive \n";
for (int i = 0; i < n; i++)
cout << a[i] << " ";
_getch();
return 0;
}