ท้าทาย
กำหนดขนาดกริดตำแหน่งอุปสรรคตำแหน่งผู้เล่นและตำแหน่งเป้าหมายงานของคุณคือหาเส้นทางให้ผู้เล่นไปถึงเป้าหมายและหลีกเลี่ยงอุปสรรคในเวลาเดียวกัน (ถ้าจำเป็น)
อินพุต
- N : ขนาดกริด
N x N
- P : ตำแหน่งของผู้เล่น
[playerposx, playerposy]
- T : ตำแหน่งของเป้าหมาย
[targetposx, targetposy]
- O : ตำแหน่งของอุปสรรค
[[x1, y1], [x2, y2],...,[xn, yn]]
เอาท์พุต
เส้นทาง : ผู้เล่นเส้นทางสามารถใช้เพื่อเข้าถึงเป้าหมาย[[x1, y1], [x2, y2],...,[xn, yn]]
กฎระเบียบ
- จุด
[0,0]
อยู่ที่มุมบนซ้ายของตาราง - ตำแหน่งของผู้เล่นจะอยู่ทางด้านซ้ายของกริดเสมอ
- ตำแหน่งของเป้าหมายจะอยู่ทางด้านขวาของกริดเสมอ
- ตารางจะมีสิ่งกีดขวางอย่างน้อยหนึ่งรายการเสมอ
- คุณสามารถสันนิษฐานได้ว่าไม่มีสิ่งกีดขวางผู้เล่นหรือตำแหน่งที่ทับซ้อนกัน
- คุณไม่จำเป็นต้องค้นหาเส้นทางขั้นต่ำ
- ผู้เล่นสามารถเลื่อนไปทางซ้ายขวาบนและล่างไม่ได้ตามแนวทแยงมุม
- คุณสามารถรับอินพุตได้อย่างสะดวกสบาย
- คุณสามารถสันนิษฐานได้ว่าเส้นทางสำหรับผู้เล่นที่จะไปถึงเป้าหมายนั้นจะมีอยู่เสมอ
- เห็นได้ชัดว่าสำหรับแต่ละเส้นทางมีหลายเส้นทางที่ใช้ได้ให้เลือกหนึ่งเส้นทาง
- สมมติดังนั้นตารางจะมีอย่างน้อย
N > 2
3 x 3
ตัวอย่าง
การป้อนข้อมูล: 9
, [6, 0]
, [3, 8]
, [[0, 5], [2, 2], [6, 4], [8, 2], [8, 7]]
เอาท์พุทเป็นไปได้:[[6, 0], [6, 1], [6, 2], [6, 3], [5, 3], [5, 4], [5, 5], [5, 6], [5, 7], [5, 8], [4, 8], [3, 8]]
การป้อนข้อมูล: 6
, [1, 0]
, [3, 5]
, [[1, 2], [2, 5], [5, 1]]
เอาท์พุทเป็นไปได้:[[1, 0], [1, 1], [2, 1], [2, 2], [2, 3], [2, 4], [3, 4], [3, 5]]
บันทึก
ขอให้สังเกตว่าX
สำหรับแถวและY
สำหรับ cols อย่าสับสนกับพิกัดในภาพ
แก้ไข
ในฐานะที่เป็น @digEmAll ชี้ให้เห็นเนื่องจากกฎระเบียบ#2
และ#3
, และplayerY = 0
targetY = N-1
ดังนั้นถ้าคุณต้องการคุณสามารถใช้เป็นอินพุตเท่านั้นplayerX
และtargetX
(ถ้านั่นทำให้รหัสของคุณสั้นลง)