Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> C++

C++ में बूलियन मैट्रिक्स


बूलियन मैट्रिक्स एक मैट्रिक्स है जिसमें केवल दो एलिमेंट्स 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

  1. C++ में मैट्रिक्स की पंक्ति-वार बनाम स्तंभ-वार ट्रैवर्सल C++ में मैट्रिक्स की पंक्ति-वार बनाम स्तंभ-वार ट्रैवर्सल

    एक मैट्रिक्स को दो तरीकों से ट्रैवर्स किया जा सकता है। पंक्ति-वार ट्रैवर्सल प्रत्येक पंक्ति को एक-एक करके पहले पंक्ति से शुरू करके अंतिम पंक्ति तक देखता है। पंक्ति में तत्व इंडेक्स 0 से अंतिम इंडेक्स तक लौटाए जाते हैं। स्तंभ-वार ट्रैवर्सल में, तत्वों को पहले स्तंभ से अंतिम स्तंभ तक क्रम में ट्रैवर्स

  1. C++ में स्पाइरल मैट्रिक्स III (Spiral Matrix III) C++ में स्पाइरल मैट्रिक्स III (Spiral Matrix III)

    मान लीजिए हमारे पास R पंक्तियों और C स्तंभों वाला एक 2-आयामी ग्रिड है, हम (r0, c0) से शुरू करते हैं और पूर्व की ओर मुख किए होते हैं। यहां, ग्रिड का उत्तर-पश्चिम कोना पहली पंक्ति और स्तंभ पर है, और दक्षिण-पूर्व कोना अंतिम पंक्ति और स्तंभ पर है। हम इस ग्रिड में हर स्थिति को देखने के लिए दक्षिणावर्त स

  1. - C++ में बूलियन मैट्रिक्स प्रश्न

    यहां हम एक रोचक बूलियन मैट्रिक्स समस्या देखेंगे। एक बूलियन मैट्रिक्स दिया गया है जिसमें 0 और 1 हैं। हमारा लक्ष्य यह ढूंढना है कि 1 कहां मार्क किया गया है। यदि 1 स्थिति mat[i,j] पर मार्क किया गया है, तो हम पंक्ति i और स्तंभ j के सभी एंट्रीज को 1 बना देंगे। एक उदाहरण देखते हैं। यदि मैट्रिक्स नीचे जैसा