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

r पंक्ति c कॉलम के सभी सेल को काला बनाने के लिए न्यूनतम ऑपरेशन ढूंढने के लिए C++ प्रोग्राम


मान लीजिए हमारे पास दो संख्याएं r, c और n x m आकार का एक ग्रिड है। कुछ सेल काले हैं और शेष सफेद। एक ऑपरेशन में, हम कुछ काले सेल चुन सकते हैं और ठीक इन दो में से एक कर सकते हैं:

  • उसकी पंक्ति के सभी सेल को काला रंगें, या
  • उसके कॉलम के सभी सेल को काला रंगें।

हमें पंक्ति r और कॉलम c के सेल को काला बनाने के लिए आवश्यक न्यूनतम ऑपरेशनों की संख्या ढूंढनी है। यदि असंभव है, तो -1 वापस करें।

उदाहरण के लिए, यदि इनपुट है:

W B W W W
B B B W B
W W B B B

r = 0 और c = 3

तो आउटपुट 1 होगा, क्योंकि हम पहली पंक्ति को बदलकर इसे ऐसा बना सकते हैं:

B B B B B
B B B W B
W W B B B

चरण

इसे हल करने के लिए, हम निम्नलिखित चरणों का पालन करेंगे:

n := ग्रिड की पंक्ति संख्या m := ग्रिड की कॉलम संख्या ans := inf i := 0 से n-1 तक, करें: j := 0 से m-1 तक, करें: यदि matrix[i, j], 'B' के बराबर है, तो: ans := ans का न्यूनतम और (1 यदि i और r अलग हैं, अन्यथा 0) + (1 यदि j और c अलग हैं, अन्यथा 0) यदि ans > 2, तो: -1 वापस करें अन्यथा ans वापस करें

उदाहरण

बेहतर समझ के लिए निम्नलिखित कार्यान्वयन देखें:

#include <bits/stdc++.h> using namespace std; int solve(vector<vector<char>> matrix, int r, int c) {    int n = matrix.size();    int m = matrix[0].size();    int ans = 999999;    for (int i = 0; i < n; ++i) {       for (int j = 0; j < m; ++j) {          if (matrix[i][j] == 'B') {             ans = min(ans, (i != r) + (j != c));          }       }    }    if (ans > 2) {       return -1;    }    else       return ans; } int main() {    vector<vector<char>> matrix = { { 'W', 'B', 'W', 'W', 'W' }, { 'B', 'B', 'B', 'W', 'B' }, { 'W', 'W', 'B', 'B', 'B' } };    int r = 0, c = 3;    cout << solve(matrix, r, c) << endl; }

इनपुट

{ { 'W', 'B', 'W', 'W', 'W' }, { 'B', 'B', 'B', 'W', 'B' }, { 'W', 'W', 'B', 'B', 'B' } }, 0, 3

आउटपुट

1 

  1. - C++ प्रोग्राम ग्राफ को डिस्कनेक्ट करने के लिए काटने के लिए न्यूनतम एजेस की संख्या खोजने के लिए

    इस प्रोग्राम में हमें एक ग्राफ की एज कनेक्टिविटी ढूंढनी है। एक ग्राफ की एज कनेक्टिविटी का अर्थ है यह एक ब्रिज है, इसे हटाने पर ग्राफ डिस्कनेक्ट हो जाएगा। एक डिस्कनेक्टेड अनडायरेक्टेड ग्राफ में ब्रिज को हटाने पर कनेक्टेड कंपोनेंट्स की संख्या बढ़ जाती है। फंक्शन्स और सूडोकोड connections() एक रिकर्सि

  1. - Python में स्ट्रिंग को सॉर्ट करने के लिए न्यूनतम ऑपरेशन ज्ञात करें

    एक स्ट्रिंग s दी गई है। निम्न ऑपरेशन दोहराएं जब तक स्ट्रिंग सॉर्ट न हो जाए: सबसे बड़ा इंडेक्स i ढूंढें जहां 1 ≤ i < len(s) और s[i] < s[i-1] सबसे बड़ा इंडेक्स j ढूंढें जहां i ≤ j < len(s) और सभी k ∈ [i, j] के लिए s[k] < s[i-1] s[i-1] और s[j] को स्वैप करें सफिक्स i से अंत तक रिवर्स करें यह वास्तव मे

  1. - पायथन में कॉलम फ्लिप करके टारगेट मैट्रिक्स बनाने के लिए न्यूनतम ऑपरेशन गिनने का प्रोग्राम

    मान लीजिए हमारे पास एक मैट्रिक्स M और एक टारगेट मैट्रिक्स T है जिसमें समान संख्या में पंक्तियां और स्तंभ हैं। अब एक ऑपरेशन मान लें जहां हम मैट्रिक्स में एक विशेष कॉलम को फ्लिप करते हैं ताकि सभी 1, 0 में बदल जाएं और सभी 0, 1 में बदल जाएं। तो अगर हम मैट्रिक्स की पंक्तियों को मुफ्त में पुनः क्रमबद्ध क