Нам задали следующую проблему в тесте, и я не знаю, как к ней подойти:
Учитывая набор чисел и набор операторов, найдите наименьшее число возможных операций для генерации числа.
Например:
Ввод
set of digits: {8, 1, 6, 2, 7}
set of operations: {*, /, -}
number to be generated: 981
Выход
number of operations: 2
Explanation: 981 = 16 * 62 - 11 [ 2 operations: * and - ]
Ограничения:
all numbers to be used as integers
0 <= each number in set of digits <= 9
possible set of operations: { +, -, *, / } [ the division operation will always return an integer ]
0 <= number to be generated <= 999
it is necessary that while performing the operations, any of the calculated values must not exceed 999 or be negative
the precedence of operations will always be from left to right, BODMAS/PEMDAS won't be followed. For example: 16*6+2*11 will be calculated as: ((16*6) + 2) * 11
Любая помощь в подходе к решению будет принята с благодарностью.
Я думаю, что проблема может быть решена путем генерации числа, ближайшего к данному числу, и тогда можно подумать о разнице в новой проблеме числа, которая будет сгенерирована. Хотя я не думаю, что это приведет к наименьшему количеству операций, необходимых для формирования данного числа.
Не удалось написать много кода, так как я не уверен, как подойти к решению.
Заранее спасибо!