Требуется отсортировать массив по неубыванию методом "выбор максимума".
ВХОДНЫЕ ДАННЫЕ На ПАСКАЛЕ пожалуйста
В первой строке вводится одно натуральное число, не превосходящее 1000 — размер массива. Во второй строке задаются N чисел — элементы массива (целые числа, не превосходящие по модулю 1000).
ВЫХОДНЫЕ ДАННЫЕ
Вывести получившийся массив.
ПРИМЕРЫ
ВВОД ВЫВОД 1 3
2
3 1
Ответы на вопрос
Ответил ryabovatv
0
Задача "Сортировка выбором максимума" (скриншот программы в прикрепленном файле)
Приложения:

Ответил irinahalikova
0
Ограничение по времени работы программы: 4 секунды
Исполнитель «Калькулятор» может с заданным числом X выполнить одну из трех операций и получить новое число. Возможные операции:
Прибавить к числу X единицу.
Умножить число X на 2.
Умножить число X на 3.
Определите, какое наименьшее число операций необходимо для того, чтобы получить из числа 1 заданное число N.
Входные данные
Программа получает на вход одно число N, не превосходящее 106.
Выходные данные
Программа должна вывести о
Исполнитель «Калькулятор» может с заданным числом X выполнить одну из трех операций и получить новое число. Возможные операции:
Прибавить к числу X единицу.
Умножить число X на 2.
Умножить число X на 3.
Определите, какое наименьшее число операций необходимо для того, чтобы получить из числа 1 заданное число N.
Входные данные
Программа получает на вход одно число N, не превосходящее 106.
Выходные данные
Программа должна вывести о
Ответил irinahalikova
0
есть на нее код программы?
Ответил ryabovatv
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);
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);
Ответил ryabovatv
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.
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.
Ответил irinahalikova
0
вот спасибо огромное!
Новые вопросы
Қазақ тiлi,
2 года назад
Биология,
2 года назад
Алгебра,
9 лет назад
Литература,
9 лет назад
География,
10 лет назад