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

मैट्रिक्स को स्पाइरल (सर्पिल) तरीके से प्रिंट करना


यह एल्गोरिदम ऐरे के तत्वों को सर्पिल तरीके से प्रिंट करने के लिए उपयोग किया जाता है। सबसे पहले पहली पंक्ति से शुरू करके, पूरी सामग्री प्रिंट करें और फिर प्रिंट करने के लिए अंतिम कॉलम का पालन करें, फिर अंतिम पंक्ति और इसी तरह, इस प्रकार यह तत्वों को सर्पिल फैशन में प्रिंट करता है।

इस एल्गोरिदम की टाइम कॉम्प्लेक्सिटी O(MN) है, जहां M पंक्तियों की संख्या है और N कॉलम की संख्या है।

इनपुट और आउटपुट

इनपुट: मैट्रिक्स:  1  2  3  4  5  6  7  8  9  10  11  12  13  14  15  16  17  18
आउटपुट: सर्पिल रूप में ऐरे की सामग्री: 1 2 3 4 5 6 12 18 17 16 15 14 13 7 8 9 10 11 15 16

एल्गोरिदम

dispSpiral(mat, m, n)

इनपुट: मैट्रिक्स mat, पंक्ति और कॉलम m और n।

आउटपुट: मैट्रिक्स के तत्वों को सर्पिल तरीके से प्रिंट करें।

Begin
    currRow := 0 and currCol := 0
    while currRow and currCol मैट्रिक्स रेंज में हैं, do
        for i in range currCol to n-1, do
            display mat[currRow, i]
        done
        increase currRow by 1
        for i in range currRow to m-1, do
            display mat[i, n-1]
        done
        decrease n by 1
        if currRow < m, then
            for i := n-1 down to currCol, do
                display mat[m-1, i]
            done
            decrease m by 1
        if currCol < n, then
            for i := m-1 down to currRow, do
                display mat[i, currCol]
            done
            increase currCol by 1
        done
End

उदाहरण (C++)

#include 
#define ROW 3
#define COL 6
using namespace std;
int array[ROW][COL] = {
    {1, 2, 3, 4, 5, 6},
    {7, 8, 9, 10, 11, 12},
    {13, 14, 15, 16, 17, 18}
};
void dispSpiral(int m, int n) {
    int i, currRow = 0, currCol = 0;
    while (currRow < ROW && currCol < COL) {
        for (i = currCol; i < n; i++) {
            //पहली पंक्ति को सामान्य रूप से प्रिंट करें
            cout << array[currRow][i] << " ";
        }
        currRow++;
        //अगली पंक्ति की ओर इंगित करें
        for (i = currRow; i < m; ++i) {
            //अंतिम कॉलम प्रिंट करें
            cout << array[i][n-1] << " ";
        }
        n--;
        //n-1वें कॉलम को वर्तमान अंतिम कॉलम के रूप में सेट करें
        if (currRow < m) {
            //जब currRow रेंज में हो, अंतिम पंक्ति प्रिंट करें
            for (i = n-1; i >= currCol; --i) {
                cout << array[m-1][i] << " ";
            }
            m--; //पंक्ति रेंज घटाएं
        }
        if (currCol < n) {
            //जब currCol रेंज में हो, पहली कॉलम प्रिंट करें
            for (i = m-1; i >= currRow; --i) {
                cout << array[i][currCol] << " ";
            }
            currCol++;
        }
    }
}
int main() {
    dispSpiral(ROW, COL);
}

आउटपुट

1 2 3 4 5 6 12 18 17 16 15 14 13 7 8 9 10 11 15 16
  1. C प्रोग्राम में मैट्रिक्स में विकर्ण पैटर्न में संख्याएं प्रिंट करना C प्रोग्राम में मैट्रिक्स में विकर्ण पैटर्न में संख्याएं प्रिंट करना

    कार्य n x n मैट्रिक्स को विकर्ण पैटर्न में प्रिंट करना है। यदि n 3 है तो विकर्ण पैटर्न में मैट्रिक्स प्रिंट करना है: इसलिए आउटपुट इस तरह होगा: उदाहरण इनपुट: 3 आउटपुट: 1 2 4 3 5 7 6 8 9 इनपुट: 4 आउटपुट: 1 2 4 7 3 5 8 11 6 9 12 14 10 13 15 16 समस्या सुझाव देती है कि हमें एक स

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

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

  1. C++ में दिए गए मैट्रिक्स को काउंटर-क्लॉकवाइज स्पाइरल फॉर्म में प्रिंट करना C++ में दिए गए मैट्रिक्स को काउंटर-क्लॉकवाइज स्पाइरल फॉर्म में प्रिंट करना

    इस समस्या में, हमें एक 2-डायमेंशनल मैट्रिक्स दिया गया है। और हमारा कार्य मैट्रिक्स के एलिमेंट्स को काउंटर-क्लॉकवाइज स्पाइरल फॉर्म में प्रिंट करना है। काउंटरक्लॉकवाइज स्पाइरल फॉर्म यह एक स्पाइरल ट्रैवर्सल है जो टॉप-लेफ्ट से शुरू होता है और फिर काउंटर-क्लॉकवाइज दिशा में पहले बॉटम-राइट-अप-लेफ्ट की ओर