Получите вторую строку, изменив первую строкуC++

Программы на C++. Форум разработчиков
Anonymous
Получите вторую строку, изменив первую строку

Сообщение Anonymous »


CD — это аббревиатура от «Компакт-диск», формата хранения данных на цифровых оптических дисках.

Вам даны две строки. Обе строки содержат только буквы «C» и «D».

Ваша цель — выяснить, можно ли получить вторую строку, применив определенные операции к первой строке.

Операции:
[*]Вы можете добавить «CD» в конец строки. [*]Вы можете добавить «DCDC» в конец строки. [*]Вы можете добавить «CDDD» в конец строки. [*]Вы можете удалить последние 3 символа в конце строки, если длина строки больше или равна 3.
Формат ввода

x --> в первой строке длина первой строки.

S1 --> во второй строке первая строка.

y --> в третьей строке длина второй строки.

S2 --> в четвертой строке, вторая строка.

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

Если можно получить вторую строку, выведите «YES», если нет, выведите «NO» (ответ выведите без кавычек).

Ограничения
[*]
1≤x,y≤2*10^5
[*]
S1 и S2 содержат только буквы «C» и «D».

Пример ввода

3 CCC 6 CCCDCD Пример вывода

ДА

Объяснение

CCC --> CCCDCDC (2-я операция)
CCCDCDC --> CCCD (4-я операция)
CCCD --> CCCDCD (1-я операция)

Я пытался решить эту проблему с помощью рекурсии, но не смог. Есть ли просто грубое решение? Наверное, есть какая-то хитрость, которую я не вижу.

Вернуться в «C++»