Я не думаю, что есть конкретная формула для этого вопроса. Вам нужно просмотреть каждый заказ и решить, можно ли его выполнить.
Давайте посмотрим на (a) вместе: E F G A C B D
.
Если мы заменим ключи на их хэшзначения, мы получим 4 4 2 2 0 0 4
. Теперь важная часть - обратите внимание, что only G
находится в «правом» сегменте, все остальные значения были смещены из-за линейного зондирования. Это возможно?
Скажем, мы сначала вставили G, и она была записана в индекс 2. Что теперь? Если мы вставим ключ с хешем 0
или 4
, он будет помещен в ячейку 0
или 4
без проверки, а это не то, что нам нужно. Единственный вариант - вставить A
сейчас, который также имеет хеш-значение 2
. Куда это пойдет? Индекс 3 конечно из-за линейного зондирования. Пока все хорошо, наш массив выглядит так: X X G A X X X
Что теперь? У нас остались только ключи с хешем 0
или 4
, и как только мы вставим один такой ключ, он будет помещен в ячейку 0
или 4
. Но в шаблоне, к которому мы обращаемся, все значения с хэшами 0
и 4
не находятся в «правильной» ячейке. Следовательно, этот шаблон невозможен.
Теперь давайте посмотрим на (b). Заказ составляет C E B G F D A
, что означает 0 4 0 2 4 4 2
. Как мы можем создать этот шаблон?
Давайте вставим C: C X X X X X X
Что теперь? Давайте вставим F: C X X X F X X
. Теперь давайте вставим D. Из-за линейного зондирования мы получим C X X X F D X
. Что теперь? Застряли. Неважно, что мы вставим сейчас, мы не сможем достичь C E B G F D A
. Что мы можем изменить в наших предыдущих вставках, чтобы добиться другого результата? Нет. Следовательно, (б) также невозможно.