М
Молодежь
К
Компьютеры-и-электроника
Д
Дом-и-сад
С
Стиль-и-уход-за-собой
П
Праздники-и-традиции
Т
Транспорт
П
Путешествия
С
Семейная-жизнь
Ф
Философия-и-религия
Б
Без категории
М
Мир-работы
Х
Хобби-и-рукоделие
И
Искусство-и-развлечения
В
Взаимоотношения
З
Здоровье
К
Кулинария-и-гостеприимство
Ф
Финансы-и-бизнес
П
Питомцы-и-животные
О
Образование
О
Образование-и-коммуникации
116541
116541
25.04.2023 10:57 •  Информатика

Задача 4: Сортировка В библиотеке есть 8 томов полного собрания сочинений одного писателя. Библиотекарь обозначил их латинскими буквами от A до H в порядке выхода томов, но оказалось, что они стоят на полке в обратном порядке:

HGFEDCBA

Библиотекарь решил переставить эти книги так, чтобы они шли по порядку: ABCDEFGH. За одну операцию библиотекарь может взять две или более подряд идущих книг, достать их с полки и, не меняя порядок следования книг, переставить их в какое-то другое место на полке (между другими какими-то книгами, в начало или в конец полки).

Например, библиотекарь может взять три тома FED, достать их с полки (на полке останутся тома HGCBA), и поставить их так, чтобы перед ними оказалось 4 тома. Получится HGCBFEDA. Можно поставить их в начало полки, тогда получится последовательность FEDHGCBA, а если поставить их в конец, то получится HGCBAFED.

библиотекарю упорядочить этот ряд книг за минимальное число операций.

ответ запишите в виде последовательности строк, каждая строка должна соответствовать какому-то расположению томов на полке, то есть быть перестановкой символов ABCDEFGH. Первой строкой ответа должна быть HGFEDCBA, последней строкой ответа должна быть ABCDEFGH, и каждая строка ответа (кроме первой) должна получаться из предыдущей применением указанной операции. Обратите внимание, что переставляемый фрагмент не может состоять только из одной книги. То есть ответ должен иметь такой вид (вместо многоточий находится несколько пропущенных строк).

HGFEDCBA
...
...
...
ABCDEFGH
Чем меньше операций будет в вашем алгоритме, тем больше вы получите, при условии, что в результате применения вашего алгоритма тома будут расставлены по порядку от A до H.

👇
Ответ:
laura35
laura35
25.04.2023

HGFEDCBA

EHGFDCBA

EFDCGHBA

EFBADCGH

ADEFBCGH

ABCDEFGH

4,6(11 оценок)
Открыть все ответы
Ответ:
bomixov
bomixov
25.04.2023
function nums(a: integer): System.uint64; //очень_длинное_число, 10 цифр же, кортеж не стал лепить, не школьный это тип, а массивы не очень-то сравниваться любят
var
  num: array [0..9] of byte;
begin
  foreach c: char in a.ToString() do
    num[StrToInt(c)] += 1;
  result := System.uint64.Parse(
            String.Concat(num[0], num[1], num[2], num[3], num[4],
                          num[5], num[6], num[7], num[8], num[9]));
end;

var
     a: array [1..5] of System.uint64;
  i, j: byte;

begin
  for i := 1 to 5 do
    readln(a[i]);
  for i := 1 to 4 do
    for j := i + 1 to 5 do
      if (nums(a[i]) = nums(a[j])) then
        writeln(a[i], ' <-> ', a[j]);
end.

P.S. Начал было перегружать оператор сравнивания, но головная боль лишняя, да и тоже не школьное это
4,5(60 оценок)
Ответ:
Дамочка11
Дамочка11
25.04.2023
Type
  M = array[,] of integer;

procedure Swap(var a: M; i: integer; j: integer);
//обменивает местами элементы массива a[i,i] и a[i,j]
var
  buff: integer;
begin
  if i <> j then begin
    buff := a[i, i]; a[i, i] := a[i, j]; a[i, j] := buff
  end
end;

function GetColMin(a: M; i: integer): integer;
// возвращает номер столбца, в котором найден минимальный элемент
// по строке с номером i, т.е. a[i,?]=min
var
  j, vmin, jm: integer;
begin
  vmin := 32766;
  for j := 0 to Length(a, 1) - 1 do
    if vmin > a[i, j] then begin
      vmin := a[i, j]; jm := j
    end;
  Result := jm
end;

procedure SwapMatrix(var a: M);
// меняет местами в массиве a[n,n] минимальный по строке элемент с
// элементом, лежащим на главной диагонали.
// Обращается к функции GetColMin и процедуре Swap
var
  i: integer;
begin
  for i := 0 to Length(a, 0) - 1 do Swap(a, i, GetColMin(a, i))
end;

procedure WriteMas(a: M; title: string);
// выводит заголовок, а потом массив построчно
var
  i, j, n: integer;
begin
  n := Length(a, 0) - 1;
  writeln(title);
  for i := 0 to n do
  begin
    for j := 0 to n do write(a[i, j]:5);
    writeln
  end
end;

procedure CreateMas(var a: M; n: integer; p: integer; q: integer);
// Создает массив a[0..n-1,0..n-1] и заполняет его
// данными используя датчик случайных чисел с мощностью "р"
// и минимальным значением q
var
  i, j: integer;
begin
  Randomize;
  SetLength(a, n, n);
  for i := 0 to n - 1 do
    for j := 0 to n - 1 do
      a[i, j] := random(p) + q
end;

const
  n1 = 3;
  n2 = 5;
  n3 = 8;

var
  a, b, c: M;

begin
  CreateMas(a, n1, 100, -50);
  WriteMas(a, 'Исходный массив а');
  SwapMatrix(a);
  WriteMas(a, 'Результирующий массив а');
  CreateMas(b, n2, 300, -150);
  WriteMas(b, 'Исходный массив b');
  SwapMatrix(b);
  WriteMas(b, 'Результирующий массив b');
  CreateMas(c, n3, 500, -250);
  WriteMas(c, 'Исходный массив c');
  SwapMatrix(c);
  WriteMas(c, 'Результирующий массив c');
end.

Тестовый прогон:

Исходный массив а
   14   23    7
  -50   31   36
  -39  -43  -38
Результирующий массив а
    7   23   14
   31  -50   36
  -39  -38  -43
Исходный массив b
  -91    6  -21 -139 -141
  130  -99   44  131  143
   93    5   97 -111   43
 -113   15  125   88   31
 -115  -39   27  124  144
Результирующий массив b
 -141    6  -21 -139  -91
  130  -99   44  131  143
   93    5 -111   97   43
   88   15  125 -113   31
  144  -39   27  124 -115
Исходный массив c
 -234  211  207 -131  151 -228  197 -163
  147    5  180 -135 -181  217 -178   -3
  178 -142 -149  -44 -195 -224 -187 -173
  -24   62   28 -134  -11 -216  -59   83
   62  -86   48  152  -44  -49 -218   92
   91  -60  201  206 -160 -135 -131   77
  161 -184 -204  113 -181  199  223  240
  147  129  143 -162   -6   80   98  113
Результирующий массив c
 -234  211  207 -131  151 -228  197 -163
  147 -181  180 -135    5  217 -178   -3
  178 -142 -224  -44 -195 -149 -187 -173
  -24   62   28 -216  -11 -134  -59   83
   62  -86   48  152 -218  -49  -44   92
   91  -60  201  206 -135 -160 -131   77
  161 -184  223  113 -181  199 -204  240
  147  129  143  113   -6   80   98 -162
4,4(86 оценок)
Это интересно:
Новые ответы от MOGZ: Информатика
Полный доступ к MOGZ
Живи умнее Безлимитный доступ к MOGZ Оформи подписку
logo
Вход Регистрация
Что ты хочешь узнать?
Спроси Mozg
Открыть лучший ответ