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

C++ में सभी सरणी तत्वों को समान बनाने के लिए आवश्यक संचालनों की संख्या ज्ञात कीजिए

इस समस्या में, हमें आकार n का एक सरणी एरर दिया जाता है। हमारा काम है सभी सरणी तत्वों को समान बनाने के लिए आवश्यक संचालन की संख्या का पता लगाना

ऑपरेशन को सरणी के सभी तत्वों को अधिकतम भार वाले तत्व से समान भार के वितरण के रूप में परिभाषित किया गया है

यदि सरणी तत्वों को समान बनाना संभव नहीं है, तो -1 प्रिंट करें।

समस्या को समझने के लिए एक उदाहरण लेते हैं,

Input : arr[] = {7, 3, 3, 3}
Output : 3

स्पष्टीकरण

वितरण के बाद सरणी {4, 4, 4, 4}

. है

समाधान दृष्टिकोण

समस्या का एक सरल समाधान सरणी का सबसे बड़ा मान ज्ञात करना है। और फिर इस सबसे बड़े मान का उपयोग करके जांचें कि क्या सरणी के सभी तत्व समान हैं और मान सरणी के अधिकतम मान से n (या इसके गुणकों) के घटाव के बराबर है। यदि हाँ, तो n लौटाएँ, यदि नहीं, तो -1 लौटाएँ (संभव नहीं है)।

उदाहरण

आइए समस्या को समझने के लिए एक उदाहरण लेते हैं

#include<bits/stdc++.h>
using namespace std;
int findOperationCount(int arr[],int n){
   int j = 0, operations = 0;
   int maxVal = arr[0];
   int minVal = arr[0];
   int maxValInd = 0;
   for (int i = 1; i < n; i++){
      if(arr[i] > maxVal){
         maxVal = arr[i];
         maxValInd = i;
      }
      if(arr[i] < minVal){
         minVal = arr[i];
      }
   }
   for (int i =0;i<n;i++){
      if (arr[i] != maxVal && arr[i] <= minVal && arr[i] != 0){
         arr[j] += 1;
         arr[maxValInd] -= 1;
         maxVal -= 1;
         operations += 1;
         j += 1;
      }
      else if (arr[i] != 0){
         j += 1;
      }
   }
   for (int i = 0; i < n; i++){
      if (arr[i] != maxVal){
         operations = -1;
         break;
      }
   }
   return operations;
}
int main(){
   int arr[] = {4, 4, 8, 4};
   int n = sizeof(arr)/sizeof(arr[0]);
   cout<<"The number of operations required to make all array  elements Equal is "<<findOperationCount(arr, n);
   return 0;
}

आउटपुट

The number of operations required to make all array elements Equal is 3

  1. एक सरणी तत्व खोजें जैसे कि सभी तत्व इसके द्वारा c++ . का उपयोग करके विभाज्य हैं

    विचार करें कि हमारे पास कुछ तत्वों के साथ एक सरणी ए है। हमें A से एक अवयव इस प्रकार ज्ञात करना है कि सभी तत्वों को इससे विभाजित किया जा सके। मान लीजिए कि ए [15, 21, 69, 33, 3, 72, 81] जैसा है, तो तत्व 3 होगा, क्योंकि सभी संख्याएं 3 से विभाज्य हो सकती हैं। इस समस्या को हल करने के लिए, हम ए में सबसे

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

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

  1. पायथन में सभी सरणी तत्वों को समान बनाने के लिए आवश्यक संचालन की संख्या

    हमने तत्वों की एक सरणी दी है, और हमें तत्वों को 1 से बढ़ाकर उन सभी को समान बनाना है। हमें प्रत्येक चरण में n - 1 तत्व को बढ़ाने की अनुमति है। हमारा लक्ष्य सभी सरणी तत्वों को समान बनाने के लिए आवश्यक संचालन की कुल संख्या की गणना करना है। उदाहरण के लिए, यदि आप सूची [1, 2, 3] लेते हैं, तो सभी तत्वों को