Требуется отсортировать массив по неубыванию методом "выбор максимума". ВХОДНЫЕ ДАННЫЕ **...

0 голосов
336 просмотров

Требуется отсортировать массив по неубыванию методом "выбор максимума".
ВХОДНЫЕ ДАННЫЕ На ПАСКАЛЕ пожалуйста

В первой строке вводится одно натуральное число, не превосходящее 1000 — размер массива. Во второй строке задаются N чисел — элементы массива (целые числа, не превосходящие по модулю 1000).
ВЫХОДНЫЕ ДАННЫЕ

Вывести получившийся массив.

ПРИМЕРЫ
ВВОД ВЫВОД 1 3

2

3 1


Информатика (17 баллов) | 336 просмотров
Дан 1 ответ
0 голосов

Задача "Сортировка выбором максимума" (скриншот программы в прикрепленном файле)


image
(64 баллов)
0

спасибо большое

0

Ограничение по времени работы программы: 4 секунды

Исполнитель «Калькулятор» может с заданным числом X выполнить одну из трех операций и получить новое число. Возможные операции:

Прибавить к числу X единицу.
Умножить число X на 2.
Умножить число X на 3.

Определите, какое наименьшее число операций необходимо для того, чтобы получить из числа 1 заданное число N.
Входные данные

Программа получает на вход одно число N, не превосходящее 106.
Выходные данные

Программа должна вывести о

0

есть на нее код программы?

0

var
n, i, am: longint;
a, res: array[1..1000000] of longint;

begin
read(n);
a[1] := 0;
for i := 2 to n do
a[i] := maxint;
for i := 2 to n do
begin
if a[i] > a[i - 1] + 1 then
a[i] := a[i - 1] + 1;
if i mod 2 = 0 then
if a[i] > a[i div 2] + 1 then
a[i] := a[i div 2] + 1;
if i mod 3 = 0 then
if a[i] > a[i div 3] + 1 then
a[i] := a[i div 3] + 1;
end;
writeln(a[n]);
am := 0;
i := n;
while i <> 1 do
begin
inc(am);

0

продолжение...
if (i mod 3 = 0) and (a[i div 3] + 1 = a[i]) then begin
res[am] := 3;
i := i div 3;
end else if (i mod 2 = 0) and (a[i div 2] + 1 = a[i]) then begin
res[am] := 2;
i := i div 2;
end else begin
res[am] := 1;
i := i - 1;
end;
end;
writeln;
end.

0

вот спасибо огромное!