Поскольку длина ввода мала (10), все возможные пути (которые можно найти с помощью простого двоичного счетчика длины 10) малы (2 ^ 10 = 1024), поэтому ваш алгоритм достаточно быстр и возвращает действительный результат, иИМО нет необходимости его улучшать.
В целом, пока ваше решение не будет работать нормально во времени, памяти и других данных ограничениях, нет необходимости выполнять микрооптимизацию.например, этот случай, предлагаемый akappa, может быть решен с помощью DP, как DP, в задаче с двумя разделами, но когда ваш алгоритм работает быстро, нет необходимости делать это и может быть добавление некоторой большой константы или невозможность чтения кода.
Я просто предлагаю один раз проанализировать цифры строки (в массиве длиной 10), чтобы предотвратить слишком много разборов строк, и просто использовать * 10 ^ k + ... (Также вы можете вычислить 10 ^ k для k = 0 ..9 при запуске и сохранить его значение).