ฉันจำเป็นต้องค้นหาอัลกอริธึมการเขียนโปรแกรมแบบไดนามิกเพื่อแก้ไขปัญหานี้ ฉันพยายามแต่คิดไม่ออก นี่คือปัญหา:
คุณจะได้รับชุดอักขระ n ตัว s[1...n] ซึ่งคุณเชื่อว่าเป็นเอกสารข้อความเสียหาย ซึ่งเครื่องหมายวรรคตอนทั้งหมดหายไป (เพื่อให้ดูเหมือน "itwasthebestoftimes...") คุณต้องการสร้างเอกสารขึ้นใหม่โดยใช้พจนานุกรม ซึ่งมีอยู่ในรูปแบบของฟังก์ชันบูลีน dict(*) ซึ่งสำหรับสตริง w ใดๆ dict(w) มีค่า 1 ถ้า w เป็นคำที่ถูกต้อง และมีค่า 0 มิฉะนั้น.
- ให้อัลกอริทึมการเขียนโปรแกรมแบบไดนามิกที่กำหนดว่าสตริง s[*] สามารถถูกสร้างใหม่เป็นลำดับของคำที่ถูกต้องได้หรือไม่ เวลาทำงานควรอยู่ที่ O(n^2) มากที่สุด โดยสมมติว่าการเรียก dict แต่ละครั้งต้องใช้เวลาเป็นหน่วย
- ในกรณีที่สตริงถูกต้อง ให้อัลกอริทึมของคุณแสดงลำดับคำที่สอดคล้องกัน