ধরুন আমাদের একটি পূর্ণসংখ্যা অ্যারে আছে, আমাদের কাজ হল প্রদত্ত অ্যারের সমস্ত সম্ভাব্য ক্রমবর্ধমান অনুক্রমগুলি খুঁজে বের করা, এবং একটি ক্রমবর্ধমান অনুক্রমের দৈর্ঘ্য কমপক্ষে 2 হওয়া উচিত। তাই যদি অ্যারেটি [4,6,7,7' এর মত হয় ], তাহলে আউটপুট হবে − [[4, 6], [4, 7], [4, 6, 7], [4, 6, 7, 7], [6, 7], [6, 7] , 7], [7,7], [4,7,7]]।
এটি সমাধান করতে, আমরা এই পদক্ষেপগুলি অনুসরণ করব -
- একটি অ্যারে সংজ্ঞায়িত করুন, যাকে বলা হয় সকল ফলাফল সঞ্চয় করতে রেস
- সলভ নামে একটি পদ্ধতি তৈরি করুন। এটি nums অ্যারে, স্টার্ট এবং টেম্প অ্যারে নিয়ে যাবে
- যদি temp এর সাইজ> 1 হয়, তাহলে টেম্প res এ ঢোকান
- ভিজিটেড নামে একটি সেট তৈরি করুন
- আমি পরিসীমার জন্য সংখ্যার আকার শুরু করি
- x :=সংখ্যা[i]
- যদি x পরিদর্শন করা সেটে থাকে, তাহলে লুপের পরবর্তী অংশটি এড়িয়ে যান
- ভিজিট করা সেটে x ঢোকান
- যদি temp খালি হয় বা temp <=x এর শেষ উপাদান হয়, তাহলে
- টেম্পে x ঢোকান
- কল সমাধান (সংখ্যা, i + 1, টেম্প)
- টেম্পের শেষ থেকে একটি উপাদান মুছুন
- মূল পদ্ধতি থেকে, কল সমাধান (সংখ্যা, 0, টেম্প)
- রিটার্ন রিটার্ন
আরো ভালোভাবে বোঝার জন্য আসুন নিচের বাস্তবায়ন দেখি -
উদাহরণ
#includenamespace ব্যবহার করে std;void print_vector(vector > v){ cout <<"["; for(int i =0; i > res; অকার্যকর সমাধান (ভেক্টর এবং সংখ্যা, int শুরু, ভেক্টর টেম্প){ if(temp.size()> 1){ res.push_back(temp); } সেট পরিদর্শন করা হয়েছে; for(int i =start; i > সাবসকোয়েন্স খুঁজুন(ভেক্টর এন্ড সংখ্যা) { res.clear(); ভেক্টর temp; সমাধান (সংখ্যা, 0, তাপমাত্রা); রিটার্ন রেস; }};প্রধান(){ ভেক্টর v ={5,6,7,8}; সমাধান ob; print_vector(ob.findSubsequences(v));}
ইনপুট
[4,6,7,8]