Про задачу с монетами. Во-первых, там требуется найти минимальное число монет, то есть один способ. Во-вторых, построение базиса Грёбнера также не является быстрой операций: в Википедии написано, что размер базиса может быть не только экспоненциальным, но и вида
, что совсем много. И, в-третьих, задачи всё же значительно отличаются - тот метод в вашем случае точно не подойдёт. Впрочем, если он вам интересен, можете его изучить по схеме группы -> кольца -> кольцо многочленов -> базисы Грёбнера.
Про вашу задачу. Какое у вас ограничение на
? Вообще, мне видится разумным следующий перебор: пусть
- входная последовательность, тогда для всех пар
, что
, в порядке возрастания величины
вычисляем множество всех возможных чисел, которые получаются операциями и скобками из чисел
. Подсчет происходит понятным способом: пытаемся в выражение для
выделить последнюю операцию. То есть перебираем все позиции
, что
, что означает, что мы расставляем скобки как
, вместо звёздочки пытаемся подставить все четыре операции, вместе выражений в скобкам подставляем всевозможные числа из них (они уже посчитаны и хранятся в памяти). Важно при этом каждый результат добавлять один раз, то есть поддерживать именно множество.
Чтобы уметь восстанавливать ответ, делаем стандартный трюк: для каждой пары
и каждого числа, полученного в выражении
, храним все способы получения этого числа: то есть список из троек чисел: число
, число, взятое слева, то есть от
, и число, взятое справа, то есть от
.
Возможно, немного путано объяснил, но тут тот случай, когда решение гораздо проще, чем его формальное изложение. Так что я надеюсь, что вы поняли, а если нет, то задавайте вопросы.
Сложность у алгоритма высокая, памяти нужно много.