Для заданной последовательности неотрицательных целых чисел необходимо
Условие
Для заданной последовательности неотрицательных целых чисел необходимо найти минимальную сумму двух её элементов, номера которых различаются не менее чем на 4. Значение каждого элемента последовательности не превышает 1000. Количество элементов последовательности не превышает 10000. Вам предлагаются два задания, связанные с этой задачей: задание А и задание Б. Вы можете решать оба задания А и Б или одно из них по своему выбору. Итоговая оценка выставляется как максимальная из оценок за задания А и Б. Если решение одного из заданий не представлено, то считается, что оценка за это задание составляет 0 баллов. Задание Б является усложненным вариантом задания А, оно содержит дополнительные требования к программе. А. Напишите на любом языке программирования программу для решения поставленной задачи, в которой входные данные будут запоминаться в массиве, после чего будут проверены все возможные пары элементов. Перед программой укажите версию языка программирования.
Обязательно укажите, что программа является решением задания А. Максимальная оценка за выполнение задания А — 2 балла. Б. Напишите программу для решения поставленной задачи, которая будет эффективна как по времени, так и по памяти (или хотя бы по одной из этих характеристик).Программа считается эффективной по времени, если время работы программы пропорционально количеству элементов последовательности N, т. е. при увеличении N в k раз время работы программы должно увеличиваться не более чем в k раз.
Программа считается эффективной по памяти, если размер памяти, использованной в программе для хранения данных, не зависит от числа N и не превышает 1 килобайта.
Перед программой укажите версию языка программирования и кратко опишите использованный алгоритм.
Обязательно укажите, что программа является решением задания Б. Максимальная оценка за правильную программу, эффективную по времени и по памяти — 4 балла. Максимальная оценка за правильную программу, эффективную по времени, но неэффективную по памяти, — 3 балла. Напоминаем! Не забудьте указать, к какому заданию относится каждая из представленных Вами программ. Входные данные представлены следующим образом. В первой строке задаётся число N — общее количество элементов последовательности. Гарантируется, что N > 4. В каждой из следующих N строк задаётся одно неотрицательное целое число — очередной элемент последовательности.
Пример входных данных:7104555245352510Программа должна вывести одно число — описанную в условии сумму.
Пример выходных данных для приведённого выше примера входных данных: 20 Говоря неформально, 4 балла ставится за эффективную и правильно работающую программу, которая, возможно, содержит до трех синтаксических ошибок (описок). 3 балла ставится в случае, когда фактически задача решена, ноколичество описок более трех (но не более пяти) и допущено не более одной содержательной ошибки, не позволяющей усомниться в том, что экзаменуемый правильно придумал алгоритм (список допустимых ошибок приведен ниже). 2 балла ставится, если в дополнение к неточностям, которые перечислены выше, программа работает неэффективно по времени и/или допущено до трех упомянутых выше содержательных ошибок. Количество допустимых описок — до семи. 1 балл ставится, если программа написана неверно, но из описания алгоритма и общей структуры программы видно, что экзаменуемый в целом правильно представляет путь решения задачи. Далее сказанное уточнено.
Формат задания
Решение по шагам
Как рассуждать
Решение. Задание Б (решение для задания А приведено ниже, см. программу 3). Для каждого элемента с номером k (нумерацию начинаем с 1), начиная с k = 5, рассмотрим все допустимые по условиям задачи пары, в которых данный элемент является вторым. Минимальная сумма из всех этих пар будет получена, если первым в паре будет взят минимальный элемент среди всех, от первого и до элемента с номером k-4. Для получения эффективного по времени решения нужно по мере ввода данных помнить минимальное текущее значение, каждое вновь введенное значение складывать с минимумом, имевшимся на 4 элемента ранее, и выбрать минимальную из всех таких сумм.
Поскольку каждое текущее минимальное значение используется после ввода еще 4 элементов и после этого становится ненужным, достаточно хранить только 4 последних минимума. Для этого можно использовать буферный массив из 4 элементов и циклически заполнять его по мере ввода данных.
Размер этого массива не зависит от общего количества введенных элементов, поэтому такое решение будет эффективным не только по времени, но и по памяти. Ниже приводится пример такой программы Программа
Осталось ещё 3 шага
Пример правильной и эффективной программы на…
Пример правильной программы на языке Паскаль…
Пример правильной программы на языке Паскаль…
Бесплатно · займёт минуту