বিবেচনা করুন আমাদের k সংখ্যার সমস্ত সম্ভাব্য সংমিশ্রণ তৈরি করতে হবে যা একটি সংখ্যা n পর্যন্ত যোগ করে, এই শর্তে যে শুধুমাত্র 1 থেকে 9 পর্যন্ত সংখ্যাগুলি ব্যবহার করা যেতে পারে। প্রতিটি সংমিশ্রণ সংখ্যার একটি অনন্য সেট হওয়া উচিত। সমস্ত সংখ্যা ধনাত্মক হওয়া উচিত, এবং সমাধানে সদৃশ সমন্বয় থাকা উচিত নয়। সুতরাং k =3 এবং n =9 হলে, সম্ভাব্য সমন্বয়গুলি হল [[1,2,6],[1,3,5],[2,3,4]]
এটি সমাধান করতে, আমরা এই পদক্ষেপগুলি অনুসরণ করব -
- ধরুন আমরা সমাধান নামক একটি পদ্ধতি তৈরি করে এটি সমাধান করব। এটি পুনরাবৃত্ত পদ্ধতি হবে, এটি k, n, টেম্প অ্যারে এবং শুরু করবে। সূচনা প্রাথমিকভাবে 1
- যদি n =0
- যদি temp =k এর আকার হয়, তাহলে res-এ temp সন্নিবেশ করুন এবং রিটার্ন করুন
- এর জন্য i :=ন্যূনতম 9 এবং n
- থেকে শুরু করুন
- আমি টেম্পে ঢোকান
- সমাধান করুন(k, n – i, temp, i + 1)
- টেম্প থেকে শেষ উপাদানটি মুছুন
- প্রধান পদ্ধতিটি এরকম হবে
- টেম্প নামে একটি ফাঁকা ভেক্টর তৈরি করুন
- সমাধান (k, n, temp)
- রিটার্ন রিটার্ন
আরো ভালোভাবে বোঝার জন্য আসুন নিচের বাস্তবায়ন দেখি -
উদাহরণ
#includenamespace ব্যবহার করে std;void print_vector(vector > v){ cout <<"["; for(int i =0; i > res; void সমাধান (int k, int n, ভেক্টর temp, int start =1){ if(n ==0){ if(temp.size() ==k){ res.push_back(temp); } প্রত্যাবর্তন; } for(int i =start; i <=min(9, n); i++){ temp.push_back(i); সমাধান (k, n - i, temp, i + 1); temp.pop_back(); } } ভেক্টর<ভেক্টর > সমন্বয়Sum3(int k, int n) { res.clear(); ভেক্টর temp; সমাধান (k, n, temp); রিটার্ন রেস; }};প্রধান(){সমাধান ob; print_vector(ob.combinationSum3(2, 9));}
ইনপুট
39