ধরুন আমাদের একটি সিঁড়ি বেয়ে উঠতে হবে যেখানে 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