প্রদত্ত কাজটি হল একটি প্রদত্ত বাইনারি স্ট্রিং থেকে একটি সাব-স্ট্রিং খুঁজে বের করা এবং তারপরে শূন্য এবং সংখ্যার মধ্যে সর্বাধিক পার্থক্য।
আসুন এখন বুঝতে পারি একটি উদাহরণ ব্যবহার করে আমাদের কী করতে হবে −
ইনপুট
str = “10010110”
আউটপুট
2
ব্যাখ্যা
পজিশন 1 থেকে 4 ("0010") পর্যন্ত সাব-অ্যারেতে, জিরোস্যান্ডের মধ্যে পার্থক্য =3 – 1 =2 যা সর্বাধিক পাওয়া যেতে পারে।
ইনপুট
str = “00000”
আউটপুট
5
নিম্নলিখিত প্রোগ্রামে ব্যবহৃত পদ্ধতি
-
main() ফাংশনে str একটি স্ট্রিং তৈরি করুন বাইনারি স্ট্রিং সংরক্ষণ করতে। এছাড়াও anarray int arr ঘোষণা করুন [str.length()+1];
-
memset(arr,0,sizeof(arr)) ব্যবহার করে arr[] =0 এর সমস্ত উপাদান সেট করুন;
-
j =1 থেকে j<=str.length()
পর্যন্ত লুপ -
চেক করুন যদি(memset(arr,0,sizeof(arr)), যদি তাই হয় তাহলে arr[j]=max(arr[j-1]-1,-1);
-
অন্যথায় arr[j]=max(arr[j-1]+1,1);
রাখুন -
লুপের বাইরে *max_element(arr+1,arr+str.length()+1);
ব্যবহার করে সর্বাধিক সংখ্যা প্রিন্ট করুন
উদাহরণ
#include<bits/stdc++.h> using namespace std; int main(){ string str = "10010110"; int arr[str.length()+1]; memset(arr,0,sizeof(arr)); for(int j=1;j<=str.length();j++){ if(str[j-1]=='1') arr[j]=max(arr[j-1]-1,-1); else arr[j]=max(arr[j-1]+1,1); } cout<<*max_element(arr+1,arr+str.length()+1); return 0; }
আউটপুট
2