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

सी ++ में एक बूलियन मैट्रिक्स प्रश्न?

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

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])

begin
   define two matrices row[R] and col[C], and fill them with 0
   mark the row and column indices of mat[R,C] where 1 is placed into the row[R] and col[C] matrices
   check row[R] and col[C] if the place is marked, then fill all places of that row and column with 1’s.
end

उदाहरण

#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++) { //set all elements of row matrix as 0
      row[i] = 0;}
      for (i = 0; i < C; i++) { //set all elements of col matrix as 0
         col[i] = 0;}
         for (int i = 0; i < R; i++) { //mark row and col matrix to identify where 1 is present
            for (int j = 0; j < C; j++) {
               if (mat[i][j] == 1) {
                  row[i] = 1;
                  col[j] = 1;
               }
            }
         }
         for (i = 0; i < R; i++) { //set all 1s to the row and col, where 1 is marked
            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;
         }
      }
      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);
}

आउटपुट

Given Matrix
1001
0000
0000
0100
Updated Matrix
1111
1101
1101
1111

  1. एक मैट्रिक्स संभाव्यता प्रश्न?

    यहां हम एक मैट्रिक्स प्रायिकता समस्या देखेंगे। हमारे पास एक आयताकार मैट्रिक्स है। हम वर्तमान सेल से चार दिशाओं को समान संभावना के साथ स्थानांतरित कर सकते हैं। ये चारों दिशाएँ बाएँ, दाएँ, ऊपर और नीचे हैं। N के स्थान M[i, j] से चले जाने के बाद हमें प्रायिकता की गणना करनी होगी। यहां हम डीएफएस से संबंध

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

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

  1. सी++ में सर्पिल मैट्रिक्स III

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