Упорядочить данные числа в математическом выражении, используя операторы [+, -, *, /] и круглые скобки, чтобы получить значение 24
Опубликовано: 21 Сентября, 2022
Дан массив arr[] , состоящий из 4 целых чисел между [1-9] . Задача состоит в том, чтобы проверить, можно ли получить число 24 , поместив операторы + , – , / и * между числами или сгруппировав их используя скобки. Если это возможно, то выведите « Возможно », иначе выведите « Невозможно».
Примеры:
Input: arr[] = {3, 6, 8, 2}
Output: Possible
Explanation:
One possible way to get 24 is 3 × 6 + 8 – 2 = 24.Input: arr[] = {7, 2, 10, 6}
Output: Possible
Explanation:
One possible way to get 24 is (7 × 2–10) x 6 = 24.
Подход: Простейшая идея решения этой проблемы основана на поиске с возвратом. Выполните следующие шаги, чтобы решить проблему:
- Создайте функцию isNumber24Possible(arr[]) и примените все четыре операции между каждым последовательным элементом и рекурсивно вызовите функцию isNumber24PossibleUtil(op1, op2, op3), которая выполняет все возможные операции над 3 числами.
- Функция isNumber24PossibleUtil(op1, op2, op3) применяет все четыре операции между каждыми последовательными элементами и вызывает перегруженную функцию isNumber24PossibleUtil(op1, op2), которая применяет операцию к двум числам.
- Функция isNumber24PossibleUtil(op1, op2) используется для проверки того, можно ли уменьшить данные два числа до 24 с помощью любой из 4 операций, т. е. + , – , / и * . Попробуйте каждую операцию между числами, если какая-либо из них приведет к 24 , верните true , иначе верните false .
Ниже приведена реализация вышеуказанного подхода:
Временная сложность: O(4 2 × 4!)
Вспомогательное пространство: O(1)