बूलियन मैट्रिक्स एक मैट्रिक्स है जिसमें केवल दो तत्व 0 और 1 हैं। इस बूलियन मैट्रिक्स प्रश्न के लिए, हमारे पास एमएक्सएन आकार का बूलियन मैट्रिक्स एआर [एम] [एन] है। और हल करने की शर्त है, यदि 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