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

मैट्रिक्स के सभी तत्वों को C++ में बराबर बनाने के लिए दिए गए प्रकार के न्यूनतम संचालन

समस्या कथन

एक पूर्णांक K और M x N के एक मैट्रिक्स को देखते हुए, कार्य मैट्रिक्स के सभी तत्वों को समान बनाने के लिए आवश्यक न्यूनतम संख्या में संचालन करना है। एक ही ऑपरेशन में, K को मैट्रिक्स के किसी भी तत्व में जोड़ा या घटाया जा सकता है।

उदाहरण

If input matrix is:
{
   {2, 4},
   {20, 40}
} and K = 2 then total 27 operations required as follows;
Matrix[0][0] = 2 + (K * 9) = 20 = 9 operations
Matrix[0][1] = 4 + (k * 8) = 20 = 8 operations
Matrix[1][0] = 20 + (k * 10) = 40 = 10 operations

एल्गोरिदम

1. Since we are only allowed to add or subtract K from any element, we can easily infer that mod of all the elements with K should be equal. If it’s not, then return -1
2. sort all the elements of the matrix in non-deceasing order and find the median of the sorted elements
3. The minimum number of steps would occur if we convert all the elements equal to the median

उदाहरण

#include <bits/stdc++.h>
using namespace std;
int getMinOperations(int n, int m, int k, vector<vector<int> >& matrix) {
   vector<int> arr(n * m, 0);
   int mod = matrix[0][0] % k;
   for (int i = 0; i < n; ++i) {
      for (int j = 0; j < m; ++j) {
         arr[i * m + j] = matrix[i][j];
            if (matrix[i][j] % k != mod) {
               return -1;
            }
      }
   }
   sort(arr.begin(), arr.end());
   int median = arr[(n * m) / 2];
   int minOperations = 0;
   for (int i = 0; i < n * m; ++i)
      minOperations += abs(arr[i] - median) / k;
   if ((n * m) % 2 == 0) {
      int newMedian = arr[(n * m) / 2];
      int newMinOperations = 0;
      for (int i = 0; i < n * m; ++i)
         newMinOperations += abs(arr[i] - newMedian) / k;
      minOperations = min(minOperations, newMinOperations);
   }
   return minOperations;
}
int main() {
   vector<vector<int> > matrix = {
      { 2, 4},
      { 20, 40},
   };
   int n = matrix.size();
   int m = matrix[0].size();
   int k = 2;
   cout << "Minimum required operations = " <<
   getMinOperations(n, m, k, matrix) << endl;
   return 0;
}

जब आप उपरोक्त प्रोग्राम को संकलित और निष्पादित करते हैं। यह निम्न आउटपुट उत्पन्न करता है

आउटपुट

Minimum required operations = 27

  1. C++ का उपयोग करके सभी तत्वों को समान बनाने के लिए चालों की न्यूनतम संख्या।

    समस्या कथन N तत्वों की एक सरणी और एक पूर्णांक K को देखते हुए, इसे दिए गए सरणी पर किसी भी संख्या में निम्नलिखित ऑपरेशन करने की अनुमति है - Kवें . डालें सरणी के अंत में तत्व और सरणी के पहले तत्व को हटा दें। कार्य सरणी के सभी तत्वों को समान बनाने के लिए आवश्यक न्यूनतम संख्या में चालों को खोजना ह

  1. C++ का उपयोग करके दो स्ट्रिंग्स को समान बनाने के लिए आवश्यक न्यूनतम संख्या में ऑपरेशन।

    समस्या कथन दो स्ट्रिंग्स str1 और str2 को देखते हुए, दोनों स्ट्रिंग्स में a और b अक्षर होते हैं। दोनों तार समान लंबाई के हैं। दोनों स्ट्रिंग्स में एक _ (रिक्त स्थान) है। कार्य निम्न कार्यों की न्यूनतम संख्या करके पहली स्ट्रिंग को दूसरी स्ट्रिंग में परिवर्तित करना है - यदि _ स्थिति I पर है तो _ को

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

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