কম্পিউটার টিউটোরিয়াল

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

বুলিয়ান ম্যাট্রিক্স হলো এমন ম্যাট্রিক্স যেতে শুধু দুটি উপাদান থাকে ০ এবং ১। এই বুলিয়ান ম্যাট্রিক্স প্রশ্নে, আমাদের একটি বুলিয়ান ম্যাট্রিক্স arr[m][n] আছে mXn আকারের। শর্ত হলো: যদি m[i][j] = 1 হয়, তবে m[i] = 1 এবং m[j] = 1 হবে, অর্থাৎ i-তম সারি এবং j-তম কলামের সব উপাদান ১ হয়ে যাবে।

উদাহরণ:

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।

এখানে আমরা দুটি ফ্ল্যাগ ভেরিয়েবল নেব এবং চেক করব সারি ও কলাম ১ করার প্রয়োজন কিনা। হ্যাঁ হলে ফ্ল্যাগ = ১ অন্যথায় ০। তারপর ফ্ল্যাগ ভ্যালু অনুযায়ী সারি ও কলামের উপাদানগুলো ১ করব। সব উপাদানের জন্য একই প্রক্রিয়া করব।

C++ প্রোগ্রাম উদাহরণ

#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 Matrix:
1 0 0 0
0 0 0 0
0 0 1 0
Matrix after bit flip:
1 1 1 1
1 0 1 0
1 1 1 1
  1. C++-এ ম্যাট্রিক্সের রো-ওয়াইজ ও কলাম-ওয়াইজ ট্রাভার্সাল

  2. সি++-এ স্পায়রাল ম্যাট্রিক্স III (Spiral Matrix III)

  3. C++-এ বাইসিমেট্রিক ম্যাট্রিক্স (Bisymmetric Matrix)

  4. C++-এ বুলিয়ান ম্যাট্রিক্স সমস্যা (Boolean Matrix Question)