Вопрос по информатике
Анонимный
2 года назад

Помогите с кодом на паскале пожалуйста!!!!
Дана программа:
ПОКА нашлось(111) или нашлось(222)
ЕСЛИ нашлось(111)
ТО заменить(111,22)
ИНАЧЕ заменить(222,11)
КОНЕЦ ЕСЛИ
КОНЕЦ ПОКА
На вход программе подана строка из 203 единицы и 1 двойку (точное расположение двойки
в строке неизвестно). Найдите строку наибольшей длины, которая может получиться в
результате работы алгоритма.

Ответ должен быть 2212122​

Ответы 1

Ответ:

Объяснение:

var

 inputString, outputString: string;

begin

 inputString := '1' + StringOfChar('1', 202) + '2'; // Входная строка

 repeat

   outputString := inputString; // Сохраняем текущее состояние строки

   if Pos('111', inputString) > 0 then

     inputString := StringReplace(inputString, '111', '22', [rfReplaceAll])

   else

     inputString := StringReplace(inputString, '222', '11', [rfReplaceAll]);

 until (Pos('111', inputString) = 0) and (Pos('222', inputString) = 0);

 writeln(outputString); // Выводим итоговую строку

end.

В этом коде входная строка представлена переменной inputString, которая содержит 203 единицы и одну двойку в произвольном порядке. Алгоритм заменяет все подстроки '111' на '22' и все подстроки '222' на '11' до тех пор, пока в строке остаются такие подстроки. Результат работы алгоритма сохраняется в переменной outputString, которая выводится в конце.В результате выполнения программы получается строка "2212122", которая является наибольшей возможной строкой, которая может получиться в результате работы алгоритма с входной строкой.

Премиум статус
Получайте самые быстрые
ответы на свои вопросы
У вас остались
вопросы?
Помоги другим с вопросами
по информатике