সমস্যা
আমাদের একটি জাভাস্ক্রিপ্ট ফাংশন লিখতে হবে যা একটি ইন্টিজার অ্যারে arr প্রথম আর্গুমেন্ট ও একটি ইন্টিজার target دومা আর্গুমেন্ট হিসেবে নেবে।
অ্যারেতে প্রতিটি ইন্টিজারের জন্য আমরা অথবা '+' অথবা '-' অ্যাসাইন করতে পারি। ফাংশনটি বের করবে মোট কতগুলো উপায়ে '+'/'-' অ্যাসাইন করে অ্যারের উপাদানগুলোর যোগফল target করা যায়।
উদাহরণ:
const arr = [1, 1, 1, 1, 1]; const target = 3;
আউটপুট হবে:
const output = 5;
আউটপুট ব্যাখ্যা:
৫টি উপায়: -1+1+1+1+1=3, +1-1+1+1+1=3, +1+1-1+1+1=3, +1+1+1-1+1=3, +1+1+1+1-1=3
উদাহরণ
কোডটি নিচের মতো (মেমোইজেশন সহ রিকার্সন):
const arr = [1, 1, 1, 1, 1]; const target = 3; const waysToSum = (arr = [], target = 1) => { const map = {}; const find = (arr, target, i) => { let val = i + '->' + target; if(map[val] !== undefined){ return map[val]; }; if(i === 0){ if (target === 0 && arr[0] === 0) { return 2 } return arr[0] === target || arr[0] === -target ? 1 : 0 }; map[val] = find(arr, target + arr[i], i - 1) + find(arr, target - arr[i], i - 1); return map[val] }; return find(arr, target, arr.length-1) }; console.log(waysToSum(arr, target)); আউটপুট
কনসোলে আউটপুট:
5