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

จาก Theory Wiki
ไปยังการนำทาง ไปยังการค้นหา

ให้ มีค่าเป็น 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>