Какое наименьшее количество четвёрок может быть в строке B?
Условие
Исполнитель Редактор получает на вход строку цифр и преобразует её. Редактор может выполнять две команды, в обеих командах v и w обозначают цепочки цифр.А) заменить (v, w).Эта команда заменяет в строке первое слева вхождение цепочки v на цепочку w. Например, выполнение команды заменить (111, 27) преобразует строку 05111150 в строку 0527150.Если в строке нет вхождений цепочки v, то выполнение команды заменить (v, w) не меняет эту строку.Б) нашлось (v).Эта команда проверяет, встречается ли цепочка v в строке исполнителя Редактор. Если она встречается, то команда возвращает логическое значение «истина», в противном случае возвращает значение «ложь». Строка исполнителя при этом не изменяется. Дана программа для Редактора:НАЧАЛО ПОКА НЕ нашлось (00) ЕСЛИ нашлось (011) ТО заменить (011, 101) ИНАЧЕ заменить (01, 40) заменить (02, 20) заменить (0222, 1401) КОНЕЦ ЕСЛИ КОНЕЦ ПОКАКОНЕЦ Известно, что исходная строка A содержала ровно два нуля — на первом и на последнем месте, а также поровну единиц и двоек. После выполнения данной программы получилась строка B, содержащая 8 единиц и 13 двоек.
Какое наименьшее количество четвёрок может быть в строке B?
Ответ
Ответ и полный разбор откроются после входа
Посмотреть ответРешение по шагам
Как рассуждать
Решение. Приведем решение на языке Python. d = set() # сохраним сюда все результаты def move(k1, k2, kk1, kk2, c, last): # k1, k2 - сколько осталось ед. и дв., kk1, kk2 - текущие замены Х if len(d) and c > min(d): return # если c > минимума, решение не подходит if kk1 == 8 and kk2 == 13 and c > 1 and kk1 + kk2 + c == k1+k2 +c: # если условия совпали, а количество цифр в строке такое же d.add(c) # добавляем текущее количество четверок if last == 0: # если предыдущая команда не {0222, 1401}, можно выполнить любую if k1 > 0: move(k1-1, k2, kk1-1, kk2, c+1,
Осталось ещё 8 шагов
# выполняем, если можно if k2 >…
# выполняем, если можно elif last == 1: #…
# перебираем варианты количества единиц и…
print(min(d))…
Приведем решение Бориса Савельева на языке…
s = s.replace('02', '20'…
s = s.replace('0222', '1401'…
if s.count('1')==8 and s.count('2')…
Бесплатно · займёт минуту