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

C++ में मैट्रिक्स का जिगजैग (या विकर्ण) ट्रैवर्सल


इस समस्या में, हमें एक 2D मैट्रिक्स दिया गया है। हमारा कार्य मैट्रिक्स के सभी तत्वों को विकर्ण क्रम में प्रिंट करना है।

समस्या को समझने के लिए एक उदाहरण लेते हैं,

1   2   3
4   5   6
7   8   9

आउटपुट -

1 4   2 7   5   3 8   6 9

आइए उस पैटर्न को देखें जो मैट्रिक्स को जिगजैग या विकर्ण रूप में प्रिंट करते समय अपनाया जाता है।

C++ में मैट्रिक्स का जिगजैग (या विकर्ण) ट्रैवर्सल

यही वह तरीका है जिससे विकर्ण ट्रैवर्सल काम करता है।

आउटपुट में लाइनों की संख्या हमेशा 2D मैट्रिक्स की पंक्तियों और स्तंभों पर निर्भर करती है।

mat[r][c] मैट्रिक्स के लिए, आउटपुट लाइनें r+c-1 होंगी।

उदाहरण

अब, आइए प्रोग्राम का समाधान देखें,

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

int min2(int a, int b) { return (a < b) ? a : b; }
int min3(int a, int b, int c) { return min2(min2(a, b), c); }
int max(int a, int b) { return (a > b) ? a : b; }

void printDiagonalMatrix(int matrix[][C]) {
    for (int line = 1; line <= (R + C - 1); line++) {
        int start_col = max(0, line - R);
        int count = min3(line, (C - start_col), R);
        for (int j = 0; j < count; j++)
            cout << matrix[min2(R, line) - j - 1][start_col + j] << "\t";
        cout << endl;
    }
}

int main() {
    int M[R][C] = {{1, 2, 3, 4},
                   {5, 6, 7, 8},
                   {9, 10, 11, 12},
                   {13, 14, 15, 16},
                   {17, 18, 19, 20}};
    cout << "मैट्रिक्स है : \n";
    for (int i = 0; i < R; i++) {
        for (int j = 0; j < C; j++)
            cout << M[i][j] << "\t";
        cout << endl;
    }
    cout << "\nमैट्रिक्स का जिगजैग (विकर्ण) ट्रैवर्सल :\n";
    printDiagonalMatrix(M);
    return 0;
}

आउटपुट

मैट्रिक्स है :
1 2 3 4
5 6 7 8
9 10 11 12
13 14 15 16
17 18 19 20

जिगजैग (विकर्ण) ट्रैवर्सल :
1 5 2 9 6 3 13 10 7 4 17 14 11 8 18 15 12 19 16 20
  1. C++ में जिगजैग ट्री ट्रैवर्सल C++ में जिगजैग ट्री ट्रैवर्सल

    इस समस्या में, हमें एक बाइनरी ट्री दिया गया है। हमारा कार्य बाइनरी ट्री को जिगजैग रूप में प्रिंट करना है। समस्या को समझने के लिए एक उदाहरण लेते हैं, उपरोक्त बाइनरी ट्री का जिगजैग ट्रैवर्सल है 3 5 1 8 7 0 4 इस समस्या को हल करने के लिए, हमें बाइनरी ट्री को लेवल दर लेवल ट्रैवर्स करना होगा

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

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

  1. C++ में इडेम्पोटेंट मैट्रिक्स जांचें C++ में इडेम्पोटेंट मैट्रिक्स जांचें

    एक मैट्रिक्स M[r][c] दिया गया है, r पंक्तियों की संख्या दर्शाता है और c कॉलम की संख्या दर्शाता है जैसे कि r = c एक स्क्वायर मैट्रिक्स बनाता है। हमें जांचना है कि दिया गया स्क्वायर मैट्रिक्स इडेम्पोटेंट मैट्रिक्स है या नहीं।इडेम्पोटेंट मैट्रिक्सएक मैट्रिक्स M को इडेम्पोटेंट मैट्रिक्स कहा जाता है यदि