Your solution is ok, but you have to change your dynamic programming by a backtrack to lose the constants of access to std::map, but you have to make some pruning to speed it up.
You know, the word backtrack probably comes from the action of "tracing back" (the last few moves; note that it's 'cing', not 'cking'), not "backing track" :D
Where I live, we have many words deformed by more comfortable pronounciation (you wouldn't guess what Bluetooth is sometimes called :D). I could be wrong, of course, it's just about what makes more sense to me.
I'm really skeptical that this problem has a polynomial solution, so it's probably just about optimizing and pruning some type of backtracking.
Your solution is ok, but you have to change your dynamic programming by a backtrack to lose the constants of access to std::map, but you have to make some pruning to speed it up.
You know, the word backtrack probably comes from the action of "tracing back" (the last few moves; note that it's 'cing', not 'cking'), not "backing track" :D
but it's backtracking, isn't it? :D
Where I live, we have many words deformed by more comfortable pronounciation (you wouldn't guess what Bluetooth is sometimes called :D). I could be wrong, of course, it's just about what makes more sense to me.