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

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


समस्या विवरण

N पंक्तियों और M कॉलम का एक बाइनरी मैट्रिक्स दिया गया है। मैट्रिक्स पर अनुमत ऑपरेशन किसी भी इंडेक्स (x, y) को चुनना और उस आयत के सभी एलिमेंट्स को टॉगल करना है जिसका टॉप-लेफ्ट (0, 0) और बॉटम-राइट (x-1, y-1) है। एलिमेंट को टॉगल करने का अर्थ है 1 को 0 और 0 को 1 में बदलना। कार्य मैट्रिक्स के सभी एलिमेंट्स को सेट करने के लिए आवश्यक न्यूनतम ऑपरेशन्स ढूंढना है यानी सभी एलिमेंट्स को 1 बनाना।

उदाहरण

यदि इनपुट मैट्रिक्स है {0, 0, 0, 1, 1} 
{0, 0, 0, 1, 1} 
{0, 0, 0, 1, 1} 
{1, 1, 1, 1, 1} 
{1, 1, 1, 1, 1} 
तो उत्तर 1 है

एक चाल में, (3, 3) चुनकर पूरे मैट्रिक्स को केवल 1s से युक्त बनाया जा सकता है।

एल्गोरिदम

विचार अंतिम बिंदु (N-1, M-1) से शुरू करके मैट्रिक्स को रिवर्स ऑर्डर में ट्रैवर्स करना है। जब भी हम 0 वैल्यू वाले सेल का सामना करते हैं, उसे फ्लिप करें।

उदाहरण

#include <iostream> 
#define ROWS 5 
#define COLS 5 
using namespace std; 

int getMinOperations(bool arr[ROWS][COLS]) { 
    int ans = 0; 
    for (int i = ROWS - 1; i >= 0; i--) { 
        for (int j = COLS - 1; j >= 0; j--) { 
            if (arr[i][j] == 0) { 
                ans++; 
                for (int k = 0; k <= i; k++) { 
                    for (int h = 0; h <= j; h++) { 
                        if (arr[k][h] == 1) 
                            arr[k][h] = 0; 
                        else 
                            arr[k][h] = 1; 
                    } 
                } 
            } 
        } 
    } 
    return ans; 
} 

int main() { 
    bool mat[ROWS][COLS] = { 
        0, 0, 1, 1, 1, 
        0, 0, 0, 1, 1, 
        0, 0, 0, 1, 1, 
        1, 1, 1, 1, 1, 
        1, 1, 1, 1, 1 
    }; 
    cout << "Minimum required operations = " << getMinOperations(mat) << endl; 
    return 0; 
}

आउटपुट

जब आप उपरोक्त प्रोग्राम को कंपाइल और एक्जीक्यूट करते हैं। यह निम्नलिखित आउटपुट उत्पन्न करता है:

Minimum required operations = 3

  1. - C++ में मैट्रिक्स की सभी पंक्तियों में सामान्य विशिष्ट तत्व खोजें

    अवधारणाएक दिए गए m x m मैट्रिक्स के संबंध में, समस्या मैट्रिक्स की सभी पंक्तियों में सामान्य सभी विशिष्ट तत्वों को निर्धारित करना है। तो तत्वों को किसी भी क्रम में प्रदर्शित किया जा सकता है।इनपुटmat[][] = { {13, 2, 15, 4, 17}, {15, 3, 2, 4, 36}, {15, 2, 15, 4, 12}, {15, 26, 4, 3, 2}, {2, 19, 4, 22,

  1. C++ में बाइनरी मैट्रिक्स को शून्य मैट्रिक्स में बदलने के लिए न्यूनतम फ्लिप C++ में बाइनरी मैट्रिक्स को शून्य मैट्रिक्स में बदलने के लिए न्यूनतम फ्लिप

    मान लीजिए हमारे पास एक m x n बाइनरी मैट्रिक्स mat है। एक चरण में, हम एक सेल चुन सकते हैं और उसके बिट और उसके चारों पड़ोसियों (यदि मौजूद हों) को फ्लिप कर सकते हैं। हमें मैट्रिक्स को शून्य मैट्रिक्स में बदलने के लिए आवश्यक न्यूनतम चरणों की संख्या ज्ञात करनी है। यदि कोई समाधान नहीं है, तो -1 वापस करें।

  1. C++ में दो बाइनरी सर्च ट्रीज़ के सभी एलिमेंट्स C++ में दो बाइनरी सर्च ट्रीज़ के सभी एलिमेंट्स

    मान लीजिए हमारे पास दो बाइनरी सर्च ट्रीज़ हैं, हमें मानों की एक सूची लौटानी है, जिसमें इन ट्रीज़ में मौजूद सभी एलिमेंट्स हों, और सूची के एलिमेंट्स आरोही क्रम में हों। यदि ट्रीज़ इस प्रकार हैं -तो आउटपुट [0,1,1,2,3,4] होगा।इसे हल करने के लिए, हम निम्नलिखित चरणों का पालन करेंगे -ans नामक एक ऐरे परिभाष