นี่เป็นคำถามจาก คู่มือการออกแบบอัลกอริทึม:
สมมติว่าคุณได้รับสตริงอักขระสามสาย:
X
,Y
และZ
โดยที่|X| = n
,|Y| = m
และ|Z| = n+m.
Z
ถือเป็นการสับเปลี่ยนของX
และY
ถ้าหากZ
สามารถสร้างขึ้นได้โดยการแทรกอักขระจากX
และY
ในลักษณะที่รักษาการเรียงลำดับอักขระจากแต่ละสตริงจากซ้ายไปขวาให้อัลกอริทึมการเขียนโปรแกรมแบบไดนามิกที่มีประสิทธิภาพซึ่งกำหนดว่า
Z
เป็นการสับเปลี่ยนของX
และY
คำแนะนำ: ค่าของเมทริกซ์การเขียนโปรแกรมแบบไดนามิกที่คุณสร้างควรเป็นบูลีน ไม่ใช่ตัวเลข
นี่คือสิ่งที่ฉันลอง:
ในตอนแรก ฉันสร้างอาร์เรย์ถ่าน 1 มิติและตัวชี้ไปยังอักขระเริ่มต้นของ X,Y,Z ตามลำดับ หากตัวชี้ Z ตรงกับ X-pointer store X ในอาร์เรย์ถ่าน มิฉะนั้น ให้ตรวจสอบแบบเดียวกันกับตัวชี้ Y หากแต่ละรายการในอาร์เรย์อักขระไม่แตกต่างจากรายการสุดท้าย Z จะไม่ถูกแทรก
ใครสามารถช่วยฉันด้วยปัญหานี้?