Предмет: Информатика,
автор: irinahalikova
Требуется отсортировать массив по неубыванию методом "выбор максимума".
ВХОДНЫЕ ДАННЫЕ На ПАСКАЛЕ пожалуйста
В первой строке вводится одно натуральное число, не превосходящее 1000 — размер массива. Во второй строке задаются N чисел — элементы массива (целые числа, не превосходящие по модулю 1000).
ВЫХОДНЫЕ ДАННЫЕ
Вывести получившийся массив.
ПРИМЕРЫ
ВВОД ВЫВОД 1 3
2
3 1
Ответы
Автор ответа:
0
Задача "Сортировка выбором максимума" (скриншот программы в прикрепленном файле)
Приложения:
Автор ответа:
0
Ограничение по времени работы программы: 4 секунды
Исполнитель «Калькулятор» может с заданным числом X выполнить одну из трех операций и получить новое число. Возможные операции:
Прибавить к числу X единицу.
Умножить число X на 2.
Умножить число X на 3.
Определите, какое наименьшее число операций необходимо для того, чтобы получить из числа 1 заданное число N.
Входные данные
Программа получает на вход одно число N, не превосходящее 106.
Выходные данные
Программа должна вывести о
Исполнитель «Калькулятор» может с заданным числом 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);
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.
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
вот спасибо огромное!
Похожие вопросы
Предмет: Русский язык,
автор: Аноним
Предмет: Геометрия,
автор: malikovamasha
Предмет: Математика,
автор: Аноним
Предмет: Математика,
автор: Буток
Предмет: Химия,
автор: Ablai97