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

C++ प्रोग्राम एक ग्रिड के अंदर बहुभुज की भुजाओं की संख्या का पता लगाने के लिए

मान लीजिए, हमें आयाम h x w का एक ग्रिड दिया गया है। ग्रिड में दो प्रकार की कोशिकाएँ होती हैं, श्वेत और काली कोशिकाएँ। श्वेत कोशिकाओं को '।' द्वारा दर्शाया जाता है, जबकि काली कोशिकाओं को '#' द्वारा दर्शाया जाता है। अब ग्रिड में कई काली कोशिकाएँ हैं जो बहुभुज बनाती हैं। हमें बहुभुज की भुजाओं की संख्या ज्ञात करनी है। यह ध्यान दिया जाना चाहिए कि ग्रिड की सबसे बाहरी कोशिकाएं हमेशा सफेद होती हैं।

इसलिए, यदि इनपुट h =4, w =4, ग्रिड ={"...", ".##.", ".##.", "...."} जैसा है, तो आउटपुट 4 होगा।

काली कोशिकाएँ एक वर्ग बनाती हैं, और एक वर्ग में 4 भुजाएँ होती हैं।

कदम

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

sides := 0
for initialize i := 1, when i < h, update (increase i by 1), do:
   for initialize j := 1, when j < w, update (increase j by 1), do:
      bl := 0
      if grid[i - 1, j - 1] is same as '#', then:
         (increase bl by 1)
      if grid[i - 1, j] is same as '#', then:
         (increase bl by 1)
      if grid[i, j - 1] is same as '#', then:
         (increase bl by 1)
      if grid[i, j] is same as '#', then:
         (increase bl by 1)
      if bl is same as 1 or 3, then:
         (increase sides by 1)
return sides

उदाहरण

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

#include <bits/stdc++.h>
using namespace std;
void solve(int h, int w, vector<string> grid){
   int sides = 0;
   for(int i = 1; i < h; i++) {
      for(int j = 1; j < w; j++) {
         int bl = 0;
         if(grid.at(i - 1).at(j - 1) == '#') {
            bl++;
         }
         if(grid.at(i - 1).at(j) == '#') {
            bl++;
         }
         if(grid.at(i).at(j - 1) == '#') {
            bl++;
         }
         if(grid.at(i).at(j) == '#') {
            bl++;
         }
         if(bl == 1 or bl == 3) {
            sides++;
         }
      }
   }
   cout << sides;
}
int main() {
   int h = 4, w = 4;
   vector<string> grid = {"....", ".##.", ".##.", "...."};
   solve(h, w, grid);
   return 0;
}

इनपुट

4, 4, {"....", ".##.", ".##.", "...."}

आउटपुट

4

  1. C++ प्रोग्राम एक ग्रिड में प्रबुद्ध कोशिकाओं की संख्या का पता लगाने के लिए

    मान लीजिए, हमें h * w आयामों का एक ग्रिड दिया गया है। ग्रिड में कोशिकाओं में या तो बल्ब या बाधाएं हो सकती हैं। एक लाइट बल्ब सेल स्वयं को और उसके दाएं, बाएं, ऊपर और नीचे की कोशिकाओं को रोशन करता है और प्रकाश कोशिकाओं के माध्यम से चमक सकता है जब तक कि कोई बाधा सेल प्रकाश को अवरुद्ध न करे। एक बाधा सेल

  1. C++ प्रोग्राम दिए गए ग्राफ़ में ब्रिज किनारों की संख्या का पता लगाने के लिए

    मान लीजिए, हमें एक अभारित, अप्रत्यक्ष ग्राफ दिया गया है जिसमें n कोने और m किनारे हैं। ग्राफ़ में ब्रिज का किनारा वह किनारा होता है जिसके हटाने से ग्राफ़ डिस्कनेक्ट हो जाता है। हमें दिए गए आलेख में ऐसे आलेखों की संख्या ज्ञात करनी है। ग्राफ़ में समानांतर किनारे या सेल्फ़-लूप नहीं होते हैं। इसलिए, यद

  1. पथ बनाने के लिए ग्रिड में ब्लॉक करने के लिए कोशिकाओं की संख्या का पता लगाने के लिए सी ++ प्रोग्राम

    मान लीजिए, h * w आयामों का एक ग्रिड है। सेल स्थिति (0, 0) में एक रोबोट है और उसे स्थिति (h-1, w-1) पर जाना है। एक ग्रिड में दो प्रकार के सेल होते हैं, ब्लॉक और अनब्लॉक। रोबोट अनब्लॉक की गई कोशिकाओं से गुजर सकता है लेकिन अवरुद्ध कोशिकाओं से नहीं गुजर सकता। रोबोट चार दिशाओं में जा सकता है; यह बाएँ, दा