कार्य को देखते हुए किसी दिए गए बाइनरी स्ट्रिंग से एक उप-स्ट्रिंग और फिर शून्य और एक की संख्या के बीच अधिकतम अंतर खोजना है।
आइए अब समझते हैं कि हमें एक उदाहरण का उपयोग करके क्या करना है -
इनपुट
str = “10010110”
आउटपुट
2
स्पष्टीकरण
उप-सरणी में स्थिति 1 से 4 ("0010") तक, शून्य और वाले के बीच का अंतर =3 - 1 =2 जो अधिकतम पाया जा सकता है।
इनपुट
str = “00000”
आउटपुट
5
निम्नलिखित कार्यक्रम में उपयोग किया गया दृष्टिकोण इस प्रकार है
-
मुख्य () फ़ंक्शन में एक स्ट्रिंग बनाएं str बाइनरी स्ट्रिंग को स्टोर करने के लिए। साथ ही अनारे int गिरफ्तारी . घोषित करें [str.length()+1];
-
memset(arr,0,sizeof(arr)) का उपयोग करके arr[] =0 के सभी तत्वों को सेट करें;
-
j =1 से j तक लूप<=str.length()
-
जांचें कि क्या (मेमसेट (गिरफ्तारी, 0, आकार (गिरफ्तारी)), यदि ऐसा है तो एआर [जे] =अधिकतम (एआर [जे -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