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

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


समस्या कथन

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

उदाहरण

यदि इनपुट मैट्रिक्स है: {    {2, 4},    {20, 40} } और K = 2 तो कुल 27 ऑपरेशन आवश्यक हैं; Matrix[0][0] = 2 + (K * 9) = 20 = 9 ऑपरेशन Matrix[0][1] = 4 + (k * 8) = 20 = 8 ऑपरेशन Matrix[1][0] = 20 + (k * 10) = 40 = 10 ऑपरेशन

एल्गोरिदम

1. चूंकि हमें केवल किसी भी तत्व से K जोड़ने या घटाने की अनुमति है, हम आसानी से अनुमान लगा सकते हैं कि सभी तत्वों का K के साथ मॉड्यूलो बराबर होना चाहिए। यदि नहीं, तो -1 वापस करें 2. मैट्रिक्स के सभी तत्वों को गैर-घटते क्रम में क्रमबद्ध करें और क्रमबद्ध तत्वों का माध्यिका खोजें 3. न्यूनतम चरण तब होंगे जब हम सभी तत्वों को माध्यिका के बराबर परिवर्तित करें

उदाहरण

#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 << "न्यूनतम आवश्यक ऑपरेशन = " <<    getMinOperations(n, m, k, matrix) << endl;    return 0; }

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

आउटपुट

न्यूनतम आवश्यक ऑपरेशन = 27

  1. - C++ में सभी तत्वों को समान बनाने के लिए न्यूनतम मूव्स

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

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

    समस्या कथन दो स्ट्रिंग्स str1 और str2 दी गई हैं, दोनों में a और b वर्ण हैं। दोनों स्ट्रिंग्स समान लंबाई की हैं। दोनों स्ट्रिंग्स में एक _ (खाली स्थान) है। पहले स्ट्रिंग को दूसरी स्ट्रिंग में बदलने के लिए निम्न ऑपरेशन का उपयोग करके न्यूनतम ऑपरेशन की संख्या ढूंढें: यदि _ स्थिति i पर है तो _ को स्

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

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