Computer >> कंप्यूटर >  >> प्रोग्रामिंग >> C++

C++ . का उपयोग करके संपूर्ण सरणी को शक्तिशाली बनाने के लिए पावर उधार देने के लिए न्यूनतम 1s


हमें एक बाइनरी एरे दिया गया है जो किसी भी आकार के अंक 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

  1. सी ++ में सरणी के सभी तत्वों को समान बनाने के लिए न्यूनतम डिलीट ऑपरेशंस।

    समस्या कथन n तत्वों की एक सरणी को देखते हुए जैसे कि तत्व दोहरा सकते हैं। हम सरणी से किसी भी संख्या में तत्वों को हटा सकते हैं। कार्य इसे समान बनाने के लिए सरणी से हटाए जाने वाले तत्वों की न्यूनतम संख्या को खोजना है। arr[] = {10, 8, 10, 7, 10, -1, -4, 12} सभी सरणी तत्वों को समान बनाने के लिए हमें ह

  1. एसटीएल का उपयोग कर सी ++ में ऐरे उत्पाद

    यह ऐरे उत्पाद का पता लगाने के लिए C++ प्रोग्राम का एक उदाहरण है। एल्गोरिदम Begin Initialize the values of array. Call used defined function accumulate to return the product of array. Print the solution. End. उदाहरण कोड #include <iostream> #include <numeric> using namespace std;

  1. मैं नए का उपयोग करके C++ में 2d सरणी कैसे घोषित करूं?

    एक गतिशील 2D सरणी मूल रूप से सरणियों के लिए पॉइंटर्स की एक सरणी है। यहाँ एक 2D सरणी का आरेख है जिसका आयाम 3 x 4 है। एल्गोरिदम Begin    Declare dimension of the array.    Dynamic allocate 2D array a[][] using new.    Fill the array with the elements.    Print