กำหนดขนาดของกระดานหมากรุกและตำแหน่งเริ่มต้นของอัศวินคำนวณความน่าจะเป็นที่หลังจากการk
ย้ายอัศวินจะอยู่ในกระดานหมากรุก
บันทึก:
อัศวินทำให้การเคลื่อนไหวที่เป็นไปได้ทั้งหมด 8 อย่างด้วยความน่าจะเป็นที่เท่ากัน
เมื่ออัศวินอยู่นอกกระดานหมากรุกมันจะไม่สามารถกลับมาข้างในได้
อินพุต
อินพุตถูกคั่นด้วยเครื่องหมายจุลภาคในแบบฟอร์ม:
l,k,x,y
โดยที่l
ความยาวและความกว้างของกระดานหมากรุกk
คือจำนวนของการเคลื่อนไหวที่อัศวินจะทำx
คือตำแหน่ง x ของตำแหน่งเริ่มต้นของอัศวินและy
เป็นตำแหน่ง y ของตำแหน่งเริ่มต้นของอัศวิน โปรดทราบว่า0,0
เป็นมุมซ้ายล่างของกระดานและl-1,l-1
เป็นมุมบนขวาของกระดาน
ขั้นตอนวิธีการ:
เริ่มต้นด้วยพิกัดเริ่มต้นของอัศวิน ทำการย้ายที่เป็นไปได้ทั้งหมดสำหรับตำแหน่งนี้และคูณการเคลื่อนไหวเหล่านี้ด้วยความน่าจะเป็นของพวกเขาสำหรับการย้ายแต่ละครั้งจะเรียกใช้ฟังก์ชันต่อไปเรื่อย ๆ จนกว่าจะถึงเงื่อนไขการยกเลิก เงื่อนไขการสิ้นสุดคือถ้าอัศวินอยู่นอกกระดานหมากรุกในกรณีนี้คืน 0 หรือจำนวนการเคลื่อนไหวที่ต้องการหมดลงในกรณีนี้คืน 1
ดังที่เราเห็นได้ว่าสถานะปัจจุบันของการเรียกซ้ำขึ้นอยู่กับพิกัดปัจจุบันและจำนวนขั้นตอนที่ทำได้เท่านั้น ดังนั้นเราสามารถจดจำข้อมูลนี้ในรูปแบบตาราง
เครดิต
ความท้าทายนี้มาจากการโพสต์บล็อกของcrazyforcode.comเผยแพร่ภายใต้ใบอนุญาตCC BY-NC-ND 2.5 IN มันได้รับการดัดแปลงเล็กน้อยเพื่อให้มีความท้าทายมากขึ้น