কম্পিউটার

একটি গ্রিডের ভিতরে একটি বহুভুজ রয়েছে এমন বাহুর সংখ্যা খুঁজে বের করার জন্য 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++ প্রোগ্রাম

  2. একটি প্রদত্ত গ্রাফে সেতুর প্রান্তের সংখ্যা খুঁজে বের করার জন্য C++ প্রোগ্রাম

  3. একটি প্রদত্ত শর্ত পূরণ করে এমন একটি অ্যারের জোড়ার সংখ্যা খুঁজে বের করতে C++ প্রোগ্রাম

  4. একটি পাথ তৈরি করতে একটি গ্রিডে ব্লক করার জন্য সেলের সংখ্যা খুঁজে বের করার জন্য C++ প্রোগ্রাম