Necesito encontrar un algoritmo de programación dinámico para resolver este problema. Lo intenté pero no pude resolverlo. Aquí está el problema:Dividir una cadena en una cadena de palabras válidas usando la Programación Dinámica
Te dan una cadena de n caracteres s [1 ... n], que crees que es un documento de texto dañado en el que toda la puntuación se ha desvanecido (para que se parezca a "itwasthebestoftimes ... "). Desea reconstruir el documento utilizando un diccionario, que está disponible en forma de una función booleana dict (*) tal que, para cualquier cadena w, dict (w) tiene valor 1 si w es una palabra válida, y tiene valor 0 de otra manera.
- Proporcione un algoritmo de programación dinámico que determine si la cadena s [*] se puede reconstituir como una secuencia de palabras válidas. El tiempo de ejecución debe ser como máximo O (n^2), suponiendo que cada llamada a dict toma un tiempo de unidad.
- En el caso de que la cadena sea válida, haga que su algoritmo genere la secuencia de palabras correspondiente.
Bueno, es un ejercicio de un libro de texto. No tengo las soluciones para los ejercicios, y no estoy seguro de cómo resolver este problema. – Pet
Lo primero que viene a la mente es la ambigüedad. Supongamos que su diccionario tiene las palabras 'was', 'her' y 'washer'. Sin embargo, puedes preferir las palabras más cortas. Espera, no ... puedes cortar parte de palabra y renderizar la cadena inválida, como capturar 'auto' de 'automático'. – alxx
¿Has intentado buscar la respuesta primero? Ya hay pocas preguntas sobre este problema en SO - http://stackoverflow.com/questions/4755157/split-string-with-words, http://stackoverflow.com/questions/3553958/tokenize-valid-words-from -a-long-string, http://stackoverflow.com/questions/3466972/how-to-split-a-string-into-words-ex-stringintowords-string-with-words. Algunos de ellos mencionan soluciones de programación dinámica. – hoha