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

Подарки для Иа-Иа

Ограничение времени 1 секунда

Ограничение памяти 64Mb

Ввод стандартный ввод или input.txt

Вывод стандартный вывод или output.txt

Пух почесал в затылке, совсем сбитый с толку.

— А сегодня правда твой день рождения? — с он.

— Правда.

— Ох! Ну, поздравляю тебя и желаю много-много счастья в этот день.

— И я тебя поздравляю и желаю много-много счастья в этот день, медвежонок Пух.

— Но ведь сегодня не мой день рождения.

— Нет, не твой, а мой.

— А ты говоришь «желаю тебе счастья в этот день».

— Ну и что же? Разве ты хочешь быть несчастным в мой день рождения?

— А, понятно, — сказал Пух.

— Хватит и того, — сказал Иа-Иа, чуть не плача, — хватит и того, что я сам такой несчастный — без подарков и без именинного пирога, и вообще позабытый и позаброшенный, а уж если все остальные будут несчастны…

Напишите программу, которая найдет подарки для Иа в день рождения. Подарки спрятаны в словах.

Формат ввода

Вводятся строки слов, затем строка чисел, разделенных пробелами.

Числа указывают, какую букву (счёт с 1) нужно взять из слова, введенного ранее на таком же месте.

Формат вывода

Вывести прописными буквами слово, полученное таким образом. Если получить слово не удалось, вывести -1.

Пример 1

Ввод Вывод

Горшочек

мёда

пирог

Именинный

подарок

4 4 3 1 7

ШАРИК

Пример 2

Ввод Вывод

День

Рождения

счастливый

праздник

3 2 2 12

-1

Примечания

Количество слов совпадает с количеством с количеством чисел очень надо

👇
Ответ:
Pingvinenok01
Pingvinenok01
14.06.2022

Відповідь:

а на каком ето язике ?

Пояснення:

4,8(4 оценок)
Открыть все ответы
Ответ:
vika8330
vika8330
14.06.2022
Учитывая, что 8 букв можно переставить примерно 40 тысячами можно просто запустить поиск в ширину, сохранить для всех перестановок то, из какой строчки они получились, и потом восстановить ответ для строчки abcdefgh.

Код на python 3:
from queue import Queue

to_process = Queue()
to_process.put(("edghcbfa", None))
prec = {}

while not to_process.empty():
    s, prev = to_process.get()
    if s in prec:
        continue
    for i in range(7):
        for j in range(i + 1, 8):
            if i == 0:
                next_s = s[j::-1] + s[j+1:]
            else:
                next_s = s[:i] + s[j:i-1:-1] + s[j+1:]
            if next_s not in prec:
                to_process.put((next_s, s))
    prec[s] = prev

current = "abcdefgh"
print(current)
while prec[current] is not None:
    current = prec[current]
    print(current)

Вывод программы:
abcdefgh
edcbafgh
edcbhgfa
edbchgfa
edghcbfa

Соответственно, ответ такой:
G B
B C
H A
E A
4,4(55 оценок)
Ответ:
Нурик2266
Нурик2266
14.06.2022
Учитывая, что 8 букв можно переставить примерно 40 тысячами можно просто запустить поиск в ширину, сохранить для всех перестановок то, из какой строчки они получились, и потом восстановить ответ для строчки abcdefgh.

Код на python 3:
from queue import Queue

to_process = Queue()
to_process.put(("edghcbfa", None))
prec = {}

while not to_process.empty():
    s, prev = to_process.get()
    if s in prec:
        continue
    for i in range(7):
        for j in range(i + 1, 8):
            if i == 0:
                next_s = s[j::-1] + s[j+1:]
            else:
                next_s = s[:i] + s[j:i-1:-1] + s[j+1:]
            if next_s not in prec:
                to_process.put((next_s, s))
    prec[s] = prev

current = "abcdefgh"
print(current)
while prec[current] is not None:
    current = prec[current]
    print(current)

Вывод программы:
abcdefgh
edcbafgh
edcbhgfa
edbchgfa
edghcbfa
4,5(8 оценок)
Это интересно:
Новые ответы от MOGZ: Информатика
logo
Вход Регистрация
Что ты хочешь узнать?
Спроси Mozg
Открыть лучший ответ