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

C++ में अकेला पिक्सेल I

मान लीजिए कि हमारे पास ब्लैक एंड व्हाइट पिक्सल वाली एक तस्वीर है, हमें ब्लैक लोनली पिक्सल्स की संख्या का पता लगाना है। यहां चित्र को 2डी चार सरणी द्वारा दर्शाया गया है जिसमें क्रमशः ब्लैक एंड व्हाइट पिक्सल के लिए 'बी' और 'डब्ल्यू' शामिल हैं।

एक काला अकेला पिक्सेल वास्तव में 'बी' होता है जो एक विशिष्ट स्थान पर स्थित होता है जहां एक ही पंक्ति और एक ही कॉलम में कोई अन्य काला पिक्सेल नहीं होता है।

अगर इनपुट इस तरह है -

W डब्ल्यू बी
W बी डब्ल्यू
बी डब्ल्यू डब्ल्यू

आउटपुट 3 होगा। क्योंकि तीनों 'बी' ब्लैक लोनली पिक्सल हैं।

इसे हल करने के लिए, हम इन चरणों का पालन करेंगे -

  • n :=चित्र का आकार

  • m :=(यदि n शून्य नहीं है, तो स्तंभ का आकार, अन्यथा 0)

  • दो सरणियों की पंक्ति और आकार n के कॉलम को परिभाषित करें

  • रिट:=0, फर्स्टरो:=0

  • इनिशियलाइज़ i :=0 के लिए, जब i

    • इनिशियलाइज़ j :=0 के लिए, जब j

      • अगर तस्वीर [i, j] 'बी' के समान है, तो -

        • अगर तस्वीर [0, जे] <'वाई' और तस्वीर [0, जे] 'वी' के बराबर नहीं है, तो -

          • (तस्वीर बढ़ाएँ[0, j] 1 से)

        • अगर मैं 0 के समान हूं, तो -

          • (पहली पंक्ति को 1 से बढ़ाएं)

        • अन्यथा जब चित्र [i, 0] <'Y' और चित्र [i, 0] 'V' के बराबर नहीं है, तो -

          • (तस्वीर बढ़ाएं[i, 0] 1 से)

  • इनिशियलाइज़ i :=0 के लिए, जब i

    • इनिशियलाइज़ j :=0 के लिए, जब j

      • यदि चित्र [i, j] <'W' और (चित्र [0, j] 'C' के समान है या चित्र [0, j] 'X' के समान है), तो -

        • अगर मैं 0 के समान हूं, तो -

          • ret :=(यदि ret + firstRow 1 के समान है, तो 1 अन्यथा 0)

        • अन्यथा जब चित्र [i, 0] 'सी' के समान है या चित्र [i, 0] 'X' के समान है, तो -

          • (रिटर्न 1 से बढ़ाएं)

  • वापसी रिट

उदाहरण

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

#include <bits/stdc++.h>
using namespace std;
class Solution {
public:
   int findLonelyPixel(vector<vector<char>>& picture) {
      int n = picture.size();
      int m = n ? picture[0].size() : 0;
      vector<int< row(n);
      vector<int< col(m);
      int ret = 0;
      int firstRow = 0;
      for (int i = 0; i < n; i++) {
         for (int j = 0; j < m; j++) {
            if (picture[i][j] == 'B') {
               if (picture[0][j] < 'Y' && picture[0][j] != 'V'){
                  picture[0][j]++;
               }
               if (i == 0)
                  firstRow++;
               else if (picture[i][0] < 'Y' && picture[i][0] != 'V') {
                  picture[i][0]++;
               }
            }
         }
      }
      for (int i = 0; i < n; i++) {
         for (int j = 0; j < m; j++) {
            if (picture[i][j] < 'W' && (picture[0][j] == 'C' || picture[0][j] == 'X')) {
               if (i == 0)
                  ret += firstRow == 1 ? 1 : 0;
               else if (picture[i][0] == 'C' || picture[i][0] == 'X')
                  ret++;
            }
         }
      }
      return ret;
   }
};
main(){
   Solution ob;
   vector<vector<char>> v = {{'W','W','B'},{'W','B','W'},{'B','W','W'}};
   cout << (ob.findLonelyPixel(v));
}

इनपुट

{{'W','W','B'},{'W','B','W'},{'B','W','W'}}

आउटपुट

3

  1. स्विच स्टेटमेंट C++

    C++ में स्विच स्टेटमेंट का उपयोग कैसे करें सशर्त बयान सभी प्रोग्रामिंग भाषाओं की एक सामान्य विशेषता है। इन कथनों का उपयोग किसी प्रोग्राम के प्रवाह को नियंत्रित करने और यह निर्दिष्ट करने के लिए किया जाता है कि कोड के विशिष्ट ब्लॉक कब निष्पादित किए जाने चाहिए। C++ में उपयोग किए जाने वाले मुख्य कंडीश

  1. C++ में मितव्ययी संख्या

    इस समस्या में, हमें एक धनात्मक पूर्णांक N दिया जाता है। हमारा कार्य यह जाँचने के लिए एक प्रोग्राम बनाना है कि दी गई संख्या मितव्ययी संख्या है या नहीं। मितव्ययी संख्या - एक संख्या जिसके अंकों की संख्या दी गई संख्या के अभाज्य गुणनखंड में अंकों की संख्या से अधिक है। उदाहरण − 625, संख्या 625 का अभाज्

  1. सी++ पेंटाटोप नंबर

    पास्कल के त्रिभुज में एक पंचकोण संख्या को पाँचवीं संख्या के रूप में वर्णित किया गया है। अब, जैसा कि आप जानते हैं, यह पांचवीं संख्या है, तो इसका मतलब है कि हमारे पास पास्कल के त्रिकोण में कम से कम पांच संख्याएं होनी चाहिए, इसलिए इस श्रृंखला की पहली संख्या 1 4 6 4 1 से शुरू होती है। पास्कल त्रिभुज की