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

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


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

काउंटरक्लॉकवाइज स्पाइरल फॉर्म

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

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

काउंटर-क्लॉकवाइज ट्रैवर्सल होगा: 1 5 9 13 14 15 16 12 8 4 3 2 6 10 11 7

उदाहरण

Input: 
2 4 6
1 7 9
5 0 3
Output: 2 1 5 0 3 9 7

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

उदाहरण

हमारे समाधान के कार्यान्वयन को दिखाने वाला प्रोग्राम:

#include <bits/stdc++.h> 
using namespace std; 

#define R 3 
#define C 3 

void printCounterClockwiseSpiral(int m, int n, int matrix[R][C]) { 
    int i, k = 0, l = 0; 
    int count = 0; 
    int total = m * n; 
    while (k < m && l < n) { 
        if (count == total) 
            break; 
        for (i = k; i < m; ++i) { 
            cout << matrix[i][l] << " "; 
            count++; 
        } 
        l++; 
        if (count == total) 
            break; 
        for (i = l; i < n; ++i) { 
            cout << matrix[m - 1][i] << " "; 
            count++; 
        } 
        m--; 
        if (count == total) 
            break; 
        if (k < m) { 
            for (i = m - 1; i >= k; --i) { 
                cout << matrix[i][n - 1] << " "; 
                count++; 
            } 
            n--; 
        } 
        if (count == total) 
            break; 
        if (l < n) { 
            for (i = n - 1; i >= l; --i) { 
                cout << matrix[k][i] << " "; 
                count++; 
            } 
            k++; 
        } 
    } 
} 

int main() { 
    int mat[R][C] = { 
        { 1, 2, 3 }, 
        { 4, 5, 6 }, 
        { 7, 8, 9 } 
    }; 
    cout << "Counter Clockwise Spiral form of the matrix is :\n"; 
    printCounterClockwiseSpiral(R, C, mat); 
    return 0; 
}

आउटपुट

Counter Clockwise Spiral form of the matrix is -

1 4 7 8 9 6 3 2 5

  1. - C++ कोड: दी गई मैट्रिक्स अच्छी है या नहीं जांचना

    मान लीजिए हमारे पास एक n x n मैट्रिक्स है। मैट्रिक्स को एक अच्छी मैट्रिक्स कहा जाता है जहां 1 के बराबर नहीं हर संख्या को उसी पंक्ति में एक संख्या और उसी कॉलम में एक संख्या के योग के रूप में व्यक्त किया जा सकता है। हमें जांचना है कि दी गई मैट्रिक्स अच्छी है या नहीं।इसलिए, यदि इनपुट इस तरह है:11223164

  1. - C++ में जांचें कि दी गई मैट्रिक्स टॉपलिट्ज़ है या नहीं

    इस समस्या में, हमें आकार n*n का एक 2D वर्ग मैट्रिक्स mat[][] दिया गया है। हमारा कार्य यह जांचना है कि दी गई मैट्रिक्स टॉपलिट्ज़ है या नहीं। टॉपलिट्ज़ मैट्रिक्स जिसे विकर्ण मैट्रिक्स के रूप में भी जाना जाता है, एक मैट्रिक्स है जिसमें शीर्ष-बाएं कोने से नीचे-दाएं कोने से शुरू होने वाले विकर्ण पर तत्व

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

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