ধরুন আমাদেরকে প্রার্থী নম্বরের একটি সেট (সদৃশ ছাড়া) এবং একটি লক্ষ্য নম্বর (লক্ষ্য) দেওয়া হয়েছে।
আমাদের এমন একটি ফাংশন লিখতে হবে যা প্রার্থীদের মধ্যে সমস্ত অনন্য সংমিশ্রণ খুঁজে পায় যেখানে প্রার্থীর সংখ্যা লক্ষ্যের সাথে যোগ করে।
একই পুনরাবৃত্তি সংখ্যা প্রার্থীদের থেকে সীমাহীন সংখ্যক বার বেছে নেওয়া যেতে পারে।
দ্রষ্টব্য −
-
সমস্ত সংখ্যা (লক্ষ্য সহ) ধনাত্মক পূর্ণসংখ্যা হবে।
-
সমাধান সেটে অবশ্যই ডুপ্লিকেট সংমিশ্রণ থাকবে না।
উদাহরণস্বরূপ −
যদি ইনপুট −
হয়প্রার্থী =[2,3,6,7], লক্ষ্য =7,
এর সমাধান হতে পারে −
[ [7], [2,2,3]];
যেহেতু সমস্যা হল সমস্ত সম্ভাব্য ফলাফল পাওয়া, সেরা বা ফলাফলের সংখ্যা নয়, তাই আমাদের ডায়নামিক প্রোগ্রামিং বিবেচনা করার দরকার নেই, এটি পরিচালনা করার জন্য পুনরাবৃত্তি ব্যবহার করে ব্যাকট্র্যাকিং পদ্ধতির প্রয়োজন৷
উদাহরণ
নিম্নলিখিত কোড -
const recursiveSum =( প্রার্থী, অবশিষ্ট সমষ্টি, চূড়ান্ত সংমিশ্রণ =[], বর্তমান সংমিশ্রণ =[], startFrom =0,) => { যদি (remainingSum <0) { চূড়ান্ত সংমিশ্রণ ফেরত; } যদি (remainingSum ===0) { finalCombinations.push(currentCombination.slice()); চূড়ান্ত সংমিশ্রণ ফেরত; } এর জন্য (আলোকন্যাডিডেক্স =startFrom; candidateIndex recursiveSum(প্রার্থী, টার্গেট);console.log(combinationSum([2, 3, 6, 7], 7)); আউটপুট
নিম্নোক্ত কনসোলে আউটপুট -
<প্রে>[ [ 2, 2, 3 ], [ 7 ] ]