Этот вопрос был задан в интервью и посвящен рекурсии/возврату. Предположим, что у нас есть два массива булевых: bool* source
и bool* target
, каждая из которых имеет ту же длину n
(source/target/n заданы как аргументы). Цель вопроса состоит в преобразовании source
в target
с помощью операции switch.
- Если есть несколько трансфорумов: укажите любой из них
- Если нет решения: утверждать, что нет решения
Определение: операция switch(int i, bool* arr)
инвертирует значение в arr [i] и arr [i-1] и arr [i + 1] (если эти индексы находятся в диапазоне 0... п-1).
Другими словами, операция switch
обычно будет переворачивать три бита (i и его соседи), но только два на концах.
Например:
- switch (0, arr) будет переключать значения arr [0] и arr [1] только
- (n-1, arr) будет переключаться только значения arr [n-1] и arr [n-2] только
Заранее благодарим за предложения относительно алгоритма.