हमें एक बाइनरी एरे दिया गया है जो किसी भी आकार के अंक 1 और 0 को स्टोर कर सकता है और एक पूर्णांक चर मान लें, आधार। कार्य न्यूनतम 1 की गणना करना है जो बाइनरी सरणी के अन्य तत्वों को शक्ति उधार दे सकता है जैसे कि संपूर्ण सरणी शक्तिशाली हो जाती है। एक तत्व अपने आसन्न तत्व या किसी अन्य तत्व को आधार से कम दूरी के भीतर शक्ति उधार दे सकता है।
आइए इसके लिए विभिन्न इनपुट आउटपुट परिदृश्य देखें -
इन − int arr[] ={1, 1, 0, 1, 1, 0, 1}, इंट बेस =7
आउट − संपूर्ण सरणी को शक्तिशाली बनाने के लिए शक्ति उधार देने के लिए न्यूनतम 1s हैं:1
स्पष्टीकरण - हमें आकार 7 का एक द्विआधारी सरणी और आधार का मान 7 दिया गया है जिसका अर्थ है कि पहला सामना किया गया अंक 1 पूरे सरणी को शक्ति उधार दे सकता है। इसलिए, arr[1] पर अंक 1 किसी सरणी के अन्य सभी तत्वों को शक्ति प्रदान कर सकता है।
इन − int arr[] ={1, 1, 0, 1, 1, 0, 1}, इंट बेस =3
बाहर − संपूर्ण सरणी को शक्तिशाली बनाने के लिए कम से कम 1s शक्ति देने के लिए हैं:2
स्पष्टीकरण - हमें आकार 7 का एक द्विआधारी सरणी और 2 के रूप में आधार का मान दिया गया है जिसका अर्थ है कि पहला सामना किया गया अंक 1 एक सरणी के अगले दो तत्वों को शक्ति उधार दे सकता है। इसलिए, एआर पर अंक 1 [2] एक सरणी के अगले दो तत्वों को शक्ति उधार दे सकता है और दूसरा एआर पर [5] एक सरणी के अगले दो तत्वों को शक्ति उधार दे सकता है जो पूरे सरणी को शक्तिशाली बनाता है।
इन − int arr[] ={1, 1, 0, 1, 1, 0, 1}, इंट बेस =1
बाहर − संपूर्ण सरणी को शक्तिशाली बनाना असंभव है
स्पष्टीकरण - हमें आकार 7 का एक द्विआधारी सरणी और 1 के रूप में आधार का मान दिया जाता है जिसका अर्थ है कि पहला सामना किया गया अंक 1 किसी सरणी के अगले एकल तत्व को शक्ति उधार दे सकता है। इसलिए, संपूर्ण सरणी को शक्तिशाली बनाना असंभव है।
नीचे दिए गए प्रोग्राम में इस्तेमाल किया गया तरीका इस प्रकार है -
-
किसी दिए गए आकार की बाइनरी सरणी इनपुट करें और एक पूर्णांक चर मान लें, आधार
-
एक सरणी के आकार की गणना करें और एक चर घोषित करें मान लें, पूर्णांक प्रकार का वैल
-
कॉल के साथ वैल को ऐसे फ़ंक्शन पर सेट करें जो एक शक्तिशाली सरणी बनाने के लिए आवश्यक न्यूनतम 1 लौटाएगा और यदि यह संभव नहीं है तो यह एक -1 लौटाएगा जो आगे एक त्रुटि संदेश प्रदर्शित करेगा।
-
फ़ंक्शन के अंदर Lend_Power(int arr[], int size, int base)
-
एक बाइनरी सरणी के आकार के साथ पूर्णांक प्रकार मानों की एक सरणी घोषित करें।
-
अस्थायी चर को अस्थायी घोषित करें और इसे -1 पर सेट करें और गिनें और इसे 0 पर सेट करें।
-
एक सरणी के आकार तक i से 0 तक के लिए लूप प्रारंभ करें। लूप के अंदर, IF arr[i] बराबर 1 की जाँच करें, फिर temp को i के रूप में सेट करें और arr_2[i] को temp के रूप में सेट करें
-
0 से एक सरणी के आकार तक के लिए लूप प्रारंभ करें और रीसेट_बेस को i + बेस -1 के रूप में और रीसेट_साइज को आकार -1 के रूप में सेट करें। एक चर सेट को arr_2 [मिनट (रीसेट_बेस, रीसेट_साइज)] के रूप में सेट करें।
-
चेक करें IF सेट =-1 या सेट + बेस <=i फिर रिटर्न -1
-
वेरिएबल 'i' को सेट + बेस के रूप में सेट करें।
-
-
वापसी की संख्या।
उदाहरण
#include<bits/stdc++.h> using namespace std; int Lend_Power(int arr[], int size, int base) { int arr_2[size]; int temp = -1; int count = 0; for(int i = 0; i < size; i++) { if(arr[i] == 1) { temp = i; } arr_2[i] = temp; } for(int i = 0; i < size;) { int reset_base = i + base - 1; int reset_size = size - 1; int set = arr_2[min(reset_base, reset_size)]; if(set == -1 || set + base <= i) { return -1; } i = set + base; count++; } return count; } int main() { int arr[] = {1, 1, 0, 1, 1, 0, 1}; int base = 2; int size = sizeof(arr) / sizeof(arr[0]); int val = Lend_Power(arr, size, base); if(val == -1) { cout<<"Impossible to make entire array powerful"; } else { cout<<"Minimum 1s to lend power to make whole array powerful are: "<<val; } return 0; }
आउटपुट
यदि हम उपरोक्त कोड चलाते हैं तो यह निम्नलिखित आउट उत्पन्न करेगा
Minimum 1s to lend power to make whole array powerful are: 3