আমাদেরকে যেকোন আকারের একটি অ্যারে দেওয়া হয়েছে এবং কাজটি হল প্রদত্ত অ্যারের সাবয়ারে খুঁজে বের করা যেখানে 0 বা 1 হিসাবে সন্নিহিত উপাদানগুলির মধ্যে পার্থক্য রয়েছে।
ইনপুট − int arr[] ={ 2, 1, 5, 6, 3, 4, 7, 6}
আউটপুট − 0 বা 1 হল − 2
ব্যাখ্যা − 0 বা 1 এর মত পার্থক্য সহ একটি অ্যারের সন্নিহিত উপাদান হল {2, 1}, {5, 6}, { 3, 4} এবং {7.6}। অতএব, সাবয়ারের সর্বোচ্চ দৈর্ঘ্য 2।
ইনপুট − int arr[] ={ 2, 1, 7, 6, 5}
আউটপুট − 0 বা 1 হল − 3
ব্যাখ্যা − 0 বা 1 এর মত পার্থক্য সহ একটি অ্যারের সংলগ্ন উপাদানগুলি হল {2, 1} এবং {7, 6, 5}.. তাই, সাবয়ারের সর্বাধিক দৈর্ঘ্য হল 3৷
নিম্নলিখিত প্রোগ্রামে ব্যবহৃত পদ্ধতি
- টাইপ পূর্ণসংখ্যার একটি অ্যারে ইনপুট করুন যাতে ধনাত্মক এবং নেতিবাচক উপাদান থাকতে পারে।
- একটি অ্যারের আকার গণনা করুন এবং আরও কার্যকারিতার জন্য ফাংশনে একটি অ্যারে এবং আকার পাস করুন৷
- অস্থায়ী ভেরিয়েবল i নিন এবং এটিকে 0 এবং সর্বোচ্চ ভেরিয়েবলে সেট করুন এবং এটিকে 0 এ সেট করুন।
- i থেকে একটি অ্যারের আকার পর্যন্ত লুপ শুরু করুন৷
- লুপের ভিতরে, j সেট করুন i
- আরেকটি লুপ শুরু করুন যা itis 0 হোক বা না হোক সংলগ্ন উপাদানগুলির সাথে সাবাররে গণনা করবে৷
- লুপের ভিতরে, i-এর মান বাড়ান।
- তাপ i-j+1 এ সেট করুন
- সর্বোচ্চ টেম্পের চেয়ে কম কিনা চেক করুন তারপর সর্বোচ্চ টেম্পে সেট করুন।
- যদি i এর সমান হয় কিনা তা পরীক্ষা করুন তারপর i এর মান বৃদ্ধি করুন
- সর্বোচ্চ রিটার্ন করুন
- ফলাফল প্রিন্ট করুন।
উদাহরণ
#include<bits/stdc++.h> using namespace std; //function to calculate maximum Length subarray with // 0 or 1 difference between adjacent elements int maximum_diff(int arr[], int size){ int i = 0; int maximum = 0; while (i < size){ int j = i; while (i+1 < size && (abs(arr[i] - arr[i + 1]) == 1 || abs(arr[i] - arr[i + 1]) == 0)){ i++; } int temp = i - j + 1; if (maximum < temp){ maximum = temp; } if(j == i){ i++; } } return maximum; } int main(){ int arr[] = { 2, 1, 5, 6, 3, 4, 7, 6}; int size = sizeof(arr) / sizeof(arr[0]); cout<<"Maximum length subarray with difference between adjacent elements as either 0 or 1 are: "<< maximum_diff(arr, size); }
ইনপুট
Maximum length subarray with difference between adjacent elements as either 0 or 1 are: 2