สมมติว่าเราต้องขึ้นบันไดที่มี n ขั้น และเราตัดสินใจที่จะออกกำลังกายเพิ่มเติมโดยการกระโดดขึ้นบันได
เราสามารถกระโดดได้มากถึง k ขั้นในการกระโดดครั้งเดียว k จะเท่ากับ 1 หรือ 2 โดยไม่คำนึงถึงจำนวนขั้นบันไดในขั้นบันได
เราจำเป็นต้องส่งคืนลำดับการกระโดดที่เป็นไปได้ทั้งหมดที่คุณสามารถปีนบันไดได้ แยกประเภท
ตัวอย่างเช่น −
for n = 4 and k = 2,
ผลลัพธ์ควรเป็น −
climbingStaircase(n, k) = [[1, 1, 1, 1], [1, 1, 2], [1, 2, 1], [2, 1, 1], [2, 2]];
ตัวอย่าง
รหัสสำหรับสิ่งนี้จะเป็น −
const n = 4; const climbStairs = (n) => { if (n == 0) return 0; let memory = new Map(); let recur = (left) => { if (memory.has(left)) return memory.get(left); if (left <= 0) return 0; if (left == 1) return 1; if (left == 2) return 2; memory.set(left, recur(left − 2) + recur(left − 1)); return memory.get(left); }; return recur(n); }; console.log(climbStairs(n));
ผลลัพธ์
และผลลัพธ์ในคอนโซลจะเป็น −
5