profile
Опубликовано 6 лет назад по предмету Информатика от irinahalikova

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

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

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

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

2

3 1

  1. Ответ
    Ответ дан ryabovatv
    Задача "Сортировка выбором максимума" (скриншот программы в прикрепленном файле)
    1. Ответ
      Ответ дан irinahalikova
      Ограничение по времени работы программы: 4 секунды

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

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

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

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

      Программа должна вывести о
    2. Ответ
      Ответ дан irinahalikova
      есть на нее код программы?
    3. Ответ
      Ответ дан ryabovatv
      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);
    4. Ответ
      Ответ дан ryabovatv
      продолжение...
      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.
    5. Ответ
      Ответ дан irinahalikova
      вот спасибо огромное!
Самые новые вопросы