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

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

এখানে আমরা একটি আকর্ষণীয় বুলিয়ান ম্যাট্রিক্স সমস্যা দেখব। একটি বুলিয়ান ম্যাট্রিক্স দেওয়া আছে যেটিতে ০ এবং ১ রয়েছে। আমাদের লক্ষ্য হলো ১ কোথায় আছে তা খুঁজে বের করা। যদি mat[i][j] পজিশনে ১ থাকে, তবে সেই i-তম সারি (row) এবং j-তম কলাম (column)-এর সব এন্ট্রিকে ১ করে দিতে হবে।

উদাহরণস্বরূপ, যদি ম্যাট্রিক্স নিচের মতো হয়:

1 0 0 1
0 0 0 0
0 0 0 0
0 1 0 0

তবে পরিবর্তনের পর সেটি হবে:

1 1 1 1
1 1 0 1
1 1 0 1
1 1 1 1

অ্যালগরিদম

matrixUpdate(matrix[R][C])

শুরু
  row[R] এবং col[C] নামক দুটি ম্যাট্রিক্স সংজ্ঞায়িত করুন এবং ০ দিয়ে পূরণ করুন
  mat[R][C]-এ যেখানে ১ আছে সেগুলোর সারি এবং কলাম ইন্ডেক্স row[R] এবং col[C]-এ চিহ্নিত করুন
  row[R] এবং col[C] চেক করুন: যেখানে চিহ্নিত আছে, সেসব সারি এবং কলামকে ১ দিয়ে পূরণ করুন
শেষ

উদাহরণ কোড

#include <iostream>
#define R 4
#define C 4
using namespace std;

void updateMatrix(bool mat[R][C]) {
    bool row[R];
    bool col[C];
    int i, j;
    
    for (int i = 0; i < R; i++) {
        row[i] = 0; // row ম্যাট্রিক্সের সব উপাদান ০ সেট করুন
    }
    for (i = 0; i < C; i++) {
        col[i] = 0; // col ম্যাট্রিক্সের সব উপাদান ০ সেট করুন
    }
    
    for (int i = 0; i < R; i++) { // ১ কোথায় আছে তা চিহ্নিত করুন
        for (int j = 0; j < C; j++) {
            if (mat[i][j] == 1) {
                row[i] = 1;
                col[j] = 1;
            }
        }
    }
    
    for (i = 0; i < R; i++) { // চিহ্নিত সারি ও কলামকে ১ দিয়ে পূরণ করুন
        for (j = 0; j < C; j++) {
            if (row[i] == 1 || col[j] == 1) {
                mat[i][j] = 1;
            }
        }
    }
}

void displayMatrix(bool mat[R][C]) {
    for (int i = 0; i < R; i++) {
        for (int j = 0; j < C; j++) {
            cout << mat[i][j];
        }
        cout << endl;
    }
}

int main() {
    bool mat[R][C] = { {1, 0, 0, 1},
                       {0, 0, 0, 0},
                       {0, 0, 0, 0},
                       {0, 1, 0, 0} };
    
    cout << "Given Matrix" << endl;
    displayMatrix(mat);
    updateMatrix(mat);
    cout << "Updated Matrix" << endl;
    displayMatrix(mat);
    return 0;
}

আউটপুট

Given Matrix
1001
0000
0000
0100
Updated Matrix
1111
1101
1101
1111
  1. ম্যাট্রিক্স প্রোবাবিলিটি সমস্যা

  2. C++-এ ম্যাট্রিক্সের রো-ওয়াইজ ও কলাম-ওয়াইজ ট্রাভার্সাল

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

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