बूलियन मैट्रिक्स एक मैट्रिक्स है जिसमें केवल दो एलिमेंट्स 0 और 1 होते हैं। इस बूलियन मैट्रिक्स प्रश्न के लिए, हमारे पास आकार mXn का एक बूलियन मैट्रिक्स arr[m][n] है। और हल करने की शर्त यह है, यदि m[i][j] = 1 तो m[i] = 1 और m[j] = 1 जिसका अर्थ है कि iवीं पंक्ति और jवीं कॉलम के सभी एलिमेंट्स 1 बन जाएंगे।
आइए एक उदाहरण लेते हैं,
इनपुट: arr[2][2] = 1 0 0 0 आउटपुट: 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 में बदलने की आवश्यकता है या नहीं। यदि हां तो फ्लैग = 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 << "इनपुट मैट्रिक्स:\n"; for (int i = 0; i < R; i++) { for (int j = 0; j < C; j++) { cout << mat[i][j]<<" "; } cout <<endl; } matrixflip(mat); cout << "बिट फ्लिप के बाद मैट्रिक्स:\n"; for (int i = 0; i < R; i++) { for (int j = 0; j < C; j++) { cout << mat[i][j]<<" "; } cout <<endl; } return 0; } आउटपुट
इनपुट मैट्रिक्स: 1 0 0 0 0 0 0 0 0 0 1 0 फ्लिप के बाद मैट्रिक्स: 1 1 1 1 1 0 1 0 1 1 1 1