ดูหนึ่งข้อความ
  #4  
Old 23 พฤษภาคม 2004, 14:38
<คิดด้วยคน>
 
ข้อความ: n/a
Post

หากกำหนดให้ o แทนตัวหมาก และ x แทนช่องว่าง

จะสังเกตได้ว่า เราสามารถลดตัวหมากจาก 3m แถว n หลัก ให้เหลือเพียง 3m แถว 1 หลัก ได้เสมอ ดังนี้

Code:
........... xxxxxxxxxxx oooooooooox oooooooooox oooooooooox oooooooooox oooooooooox xxxxxxxxxxx ........... ........... xxxxxxxxxxx oooooooooox oooooooooox oooooooooox oooooooooox ooooooooxxo xxxxxxxxxxx ........... ........... xxxxxxxxxxx oooooooooox oooooooooox oooooooooxx oooooooooxx ooooooooxoo xxxxxxxxxxx ........... ........... xxxxxxxxxxx oooooooooox oooooooooox oooooooooxx oooooooooxx oooooooooxx xxxxxxxxxxx ........... ทำแบบนี้ไปเรื่อยๆ จะได้ ........... xxxxxxxxxxx oooooooooox oooooooooox oooooooooxx oooooooooxx oooooooooxx xxxxxxxxxxx ........... ........... xxxxxxxxxxx oooooooooox oooooooooox ooooooooxxx ooooooooxxx ooooooooxxx xxxxxxxxxxx ........... . . . ........... xxxxxxxxxxx oooooooooox oooooooooox oxxxxxxxxxx oxxxxxxxxxx oxxxxxxxxxx xxxxxxxxxxx ...........
หากกำหนดให้ s(m,n) แทนจำนวนหมากที่น้อยที่สุด ซึ่งเหลืออยู่บนกระดาน จากการวางหมาก m แถว และ n หลัก จะได้

s(m,n) = s(n,m)
s(1,n) = ceil(n/2)
s(2,n) = ceil(n/2)
s(3,n) = 2
s(3m,3n) = s(1,3m) เมื่อ m <= n
s(3m+1,3n) = s(1,3m+1) + s(1,3n-1) เมื่อ m < n; = s(1,3n) เมื่อ m >= n
s(3m+2,3n) = s(1,3m+2) + s(1,3n-1) เมื่อ m < n; = s(1,3n) เมื่อ m >= n
s(3m+1,3n+1) = s(1,3m+1) + s(1,3n) เมื่อ m <= n
s(3m+2,3n+1) = s(1,3m+2) + s(2,3n) เมื่อ m < n; = s(1,3n+1) + s(1,3m+1) เมื่อ m >= n
s(3m+2,3n+2) = s(1,3m+2) + s(2,3n+1) เมื่อ m <= n
ตอบพร้อมอ้างอิงข้อความนี้