কম্পিউটার

C++ এ 0 যোগ সহ সমস্ত সাবয়ারে প্রিন্ট করুন


এই সমস্যায়, আমাদেরকে পূর্ণসংখ্যার মানের একটি অ্যারে দেওয়া হয়েছে এবং আমাদের এই অ্যারে থেকে সেই সমস্ত সাবয়ারে প্রিন্ট করতে হবে যেগুলির যোগফল 0 এর সমান।

বিষয়টি আরও ভালোভাবে বোঝার জন্য একটি উদাহরণ দেওয়া যাক,

ইনপুট:অ্যারে =[-5, 0, 2, 3, -3, 4, -1]আউটপুট:যোগফল 0 সহ সাবরে 1 থেকে 4 পর্যন্ত। যোগফল 0 সহ সাবাররে 5 থেকে 7 পর্যন্ত যোগফল 0 সহ 0 থেকে 7

এই সমস্যাটি সমাধান করার জন্য, আমরা সম্ভাব্য সমস্ত সাবয়ারে পরীক্ষা করব। এবং এই সাবয়ারের যোগফল 0 এর সমান কিনা তা পরীক্ষা করুন এবং তাদের প্রিন্ট করুন। এই সমাধানটি বোঝা সহজ কিন্তু সমাধানটি জটিল, এবং এর সময় জটিলতা হল O(n^2) .

এই সমস্যার একটি ভাল সমাধান হ্যাশিং ব্যবহার করা হয়। এটি সমাধানের জন্য আমরা যোগফল খুঁজে পাব যদি এটি 0 এর সমান হয় তাহলে হ্যাশ টেবিলে যোগ করুন।

অ্যালগরিদম

<প্রে>ধাপ 1:একটি সমষ্টি পরিবর্তনশীল তৈরি করুন। ধাপ 2:যোগফল =0 হলে, সাবয়ারে সূচক 0 থেকে শুরু করে অ্যারের শেষ সূচক পর্যন্ত। ধাপ 3:যদি বর্তমান যোগফল হ্যাশ টেবিলে থাকে। ধাপ 4:যদি যোগফল বিদ্যমান, তাহলে i+1 থেকে n পর্যন্ত সাবয়ারে অবশ্যই শূন্য হতে হবে। ধাপ 5:অন্যথায় হ্যাশ টেবিলে ঢোকান।

উদাহরণ

#include নেমস্পেস ব্যবহার করে std;vector> findSubArrayWithSumZero(int arr[], int n){ unordered_map>map; ভেক্টর > out; int sum =0; জন্য (int i =0; i  vc =map[sum]; for (auto it =vc.begin(); it !=vc.end(); it++) out.push_back(make_pair(*it + 1, i)); } মানচিত্র [সমষ্টি].পুশ_ব্যাক(i); } return out;}int main(){int arr[] ={-5, 0, 2, 3, -3, 4, -1}; int n =sizeof(arr)/sizeof(arr[0]); ভেক্টর> out =findSubArrayWithSumZero(arr, n); if (out.size() ==0) cout <<"কোনও সাবারে বিদ্যমান নেই"; else এর জন্য (auto it =out.begin(); it !=out.end(); it++) cout<<"যোগফল 0 সহ সাবারে "<first <<" থেকে "< দ্বিতীয়< 

আউটপুট

যোগফল 0 সহ 1 থেকে 1 সুবারে যোগফল 0 সহ 0 থেকে 3 পর্যন্ত যোগফল 0 সহ 3 থেকে 4 সুবারে যোগফল 0 সহ 0 থেকে 6 সুবারে যোগফল 0 থেকে 4 থেকে 6 পর্যন্ত হয়

  1. C++ এ প্রদত্ত যোগফল সহ সমস্ত ট্রিপলেট প্রিন্ট করুন

  2. C++ এ প্রদত্ত যোগফল সহ সমস্ত জোড়া প্রিন্ট করুন

  3. C++ এ K আকারের M নন-ওভারল্যাপিং সাবয়ারের সর্বোচ্চ যোগফল

  4. C++-এ সমস্ত সাব-সিকোয়েন্সের যোগফলের যোগফল নির্ণয় করুন