|
| Упражнение #4. |
|
Выбирается произвольное двузначное число и
назначается первым элементом n1 последовательности
псевдослучайных чисел, а затем каждый очередной элемент ni+1 получается из предыдущего
элемента ni. Для этого ni возводится в квадрат, и из
полученного 4-хзначного результата отбрасываются левая и
правая цифры. Например: ni=25Þni=0625Þ ni+1=62. Поскольку
различных чисел в такой последовательности конечное число, то,
рано или поздно, она начнет самовоспроизводиться начиная с
некоторого места. Поэтому алгоритм генерирует именно
псевдослучайные числа. Напишите программу, генерирующую такую
последовательность по заданному входному значению
n1. Найдите место первого повтора ранее полученного
элемента. |
Вернемся к задаче об "испорченной" таблице
умножения. Предположим для определенности, что вариант хранения
данных оказался таким, как представленный на рис. A5-2.
Учтите, что столбцы, согласно условию, "не пострадали". Как искать
произведение 5´6 в "испорченной" таблице?
Обратиться - по индексу - непосредственно к нужной
нам строке, бывшей 5-й, нельзя, поскольку она могла переместиться.
Приходится перебирать строки последовательно, проще всего - сверху
вниз. Отличить искомую строку от остальных позволяет ее ключ,
расположенный в левом столбце. Сопоставив значение ключа с первым из
сомножителей, только при их совпадении можно далее двигаться вправо
по найденной строке. Если же перетасовать и столбцы, то задача
рискует стать неразрешимой.
| Упражнение #5. |
|
Системные оболочки Norton
Commander, Far, Windows
Commander предоставляют возможность, в зависимости от цели
использования, менять порядок расположения имен каталогов и
файлов в панелях Left и Right, выводимых ими на экран. Информация на эти
панели попадает из соответствующих каталогов операционной
системы. Вспомните (или выясните), как организованы каталоги,
из каких записей состоят, какие поля играют роль ключей.
|
Что произойдет, если из второй, "испорченной"
таблицы изъять столбец и строку с ключами, как на рис.
A5-3? Сохранится ли возможность поиска все того же произведения
5´6?
Да, и более того - можно продолжить эксперименты с
таблицей, и "испортить" ее настолько, что в ней вообще останется
только первый столбец (рис. A5-4), но при этом возможность
полного ее восстановления сохранится. Это так, поскольку соседние
элементы внутри каждой строки представляют нарастающие суммы
повторяющегося слагаемого (вспомните алгоритм A4-1
и рис. A4-1), причем у каждой строки ее собственное
слагаемое содержится в ней - в качестве первого элемента.
Иначе говоря, мы имеем дело с зависимостью si,j+1=si,j+si,1,
где i - номер строки на рис. A5-3 и
A5-4, j - номер столбца на рис.
A5-3, si,j - элемент таблицы
на пересечении i-й строки и j-го столбца. Соотношения подобного вида принято
называть рекуррентными. Применение они находят в
разнообразных задачах, в том числе, связанных с обработкой таблиц.
Методы и задачи, возникающие в этой связи, относят к т.н.
динамическому программированию.
Назад
|