418531 ภาคต้น 2552/โจทย์ปัญหาการโปรแกรมพลวัต I/เฉลยข้อ 5

จาก Theory Wiki
รุ่นแก้ไขเมื่อ 08:46, 3 ตุลาคม 2552 โดย Aoy (คุย | มีส่วนร่วม) (หน้าที่ถูกสร้างด้วย 'ให้ <math> OPT(i,j,k) \,</math> มีค่าเป็น yes ถ้า เราสามารถจัดวงเล็บใ…')
(ต่าง) ←รุ่นแก้ไขก่อนหน้า | รุ่นแก้ไขล่าสุด (ต่าง) | รุ่นแก้ไขถัดไป→ (ต่าง)
ไปยังการนำทาง ไปยังการค้นหา

ให้ มีค่าเป็น yes ถ้า เราสามารถจัดวงเล็บในการคูณ ให้มีค่าเท่ากับ ได้ และมีค่าเป็น no ถ้าเราไม่สามารถจัดวงเล็บในการคูณ ให้มีค่าเท่ากับ ได้ หมายเหตุ นี้จะมีค่าเป็น ถึงแม้ผลสุดท้ายต้องการให้เป็น ก็ตาม แต่เนื่องจากว่า ก่อนที่จะได้เป็น อาจได้เป็นตัวอื่น ๆ ที่มากระทำกันจนกระทั่งได้ผลสุดท้ายเป็น ก็ได้

เขียนเป็น pseudocode ได้ดังนี้

<geshi lang="c"> PARENTHESIZATION

   for i = 1 to n do
       for k = a to c do
           if x[i] = k then
               M[i,j,k] = true
           else
               M[i,j,k] = false
   for l = 2 to n do
       for i = 1 to n-l+1 do
           j = i+l-1
           for k = i to j -1 do
               for alpha = a to c do
                   M[i,j,alpha] = false
               for alpha = a to c do
                   for beta = a to c do
                       if M[i,k,alpha] and M[k+1,j,beta] then
                           M[i,j,alpha * beta] = true
   return M[1,n,a]

</geshi>