কম্পিউটার

C++ বুলিয়ান ম্যাট্রিক্স


বুলিয়ান ম্যাট্রিক্স হল একটি ম্যাট্রিক্স যার মাত্র দুটি উপাদান আছে 0 এবং 1। এই বুলিয়ান ম্যাট্রিক্স প্রশ্নের জন্য, আমাদের mXn আকারের একটি বুলিয়ান ম্যাট্রিক্স arr[m][n] আছে। এবং সমাধান করার শর্ত হল, যদি m[i][j] =1 হয় তাহলে m[i] =1 এবং m[j] =1 যার মানে ith সারি এবং jth কলামের সমস্ত উপাদান 1 হয়ে যাবে।

একটি উদাহরণ নেওয়া যাক,

Input: arr[2][2] = 1 0
                   0 0
Output: arr[2][2] = 1 1
                    1 0

ব্যাখ্যা − arr[0][0] =1 যার অর্থ arr[0][0]=arr[0][1]=1 &arr[0][0]=arr[1][0]=1.

এখানে, আমরা দুটি ফ্ল্যাগ ভেরিয়েবল নেব এবং সারি এবং কলামগুলিকে না-র মধ্যে একটিতে পরিবর্তন করতে হবে কিনা তা পরীক্ষা করব। যদি হ্যাঁ পতাকা =1 অন্যথায় 0। এবং তারপর এই ফ্ল্যাগ মানের উপর ভিত্তি করে আমরা সারি এবং কলামের উপাদানগুলির মান পরিবর্তন করব। আমরা অ্যারের সমস্ত উপাদানের জন্য একই পদ্ধতি করব।

উদাহরণ

#include <bits/stdc++.h>
using namespace std;
const int R = 3;
#define C 4
void matrixflip(int mat[R][C]) {
   int row_flag = 0;
   int col_flag = 0;
   for (int i = 0; i < R; i++) {
      for (int j = 0; j < C; j++) {
         if (i == 0 && mat[i][j] == 1)
            row_flag = 1;
         if (j == 0 && mat[i][j] == 1)
            col_flag = 1;
         if (mat[i][j] == 1) {
            mat[0][j] = 1;
            mat[i][0] = 1;
         }
      }
   }
   for (int i = 1; i < R; i++) {
      for (int j = 1; j < C; j++) {
         if (mat[0][j] == 1 || mat[i][0] == 1) {
            mat[i][j] = 1;
         }
      }
   }
   if (row_flag) {
      for (int i = 0; i < C; i++) {
         mat[0][i] = 1;
      }
   }
   if (col_flag) {
      for (int i = 0; i < R; i++) {
         mat[i][0] = 1;
      }
   }
}
int main() {
   int mat[R][C] = { { 1, 0, 0, 0 }, { 0, 0, 0, 0 }, { 0, 0, 1, 0 } };
   cout << "Input Matrix :\n";
   for (int i = 0; i < R; i++) {
      for (int j = 0; j < C; j++) {
         cout << mat[i][j]<<" ";
      }
      cout <<endl;
   }
   matrixflip(mat);
   cout << "Matrix after bit flip :\n";
   for (int i = 0; i < R; i++) {
      for (int j = 0; j < C; j++) {
         cout << mat[i][j]<<" ";
      }
      cout <<endl;
   }
   return 0;
}

আউটপুট

Input Martix:
1 0 0 0
0 0 0 0
0 0 1 0
Matirx after bit flip :
1 1 1 1
1 0 1 0
1 1 1 1

  1. C++ এ ম্যাট্রিক্সের সারি-ভিত্তিক বনাম কলাম-ভিত্তিক ট্রাভার্সাল

  2. C++ এ স্পাইরাল ম্যাট্রিক্স III

  3. C++ তে বিসিমেট্রিক ম্যাট্রিক্স?

  4. C++ এ একটি বুলিয়ান ম্যাট্রিক্স প্রশ্ন?