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