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<<"Conter Clockwise Spiral from of the matrix is :\n";
   printCounterClockwiseSpiral(R, C, mat);
   return 0;
}

आउटपुट

मैट्रिक्स से काउंटर क्लॉकवाइज स्पाइरल है -

1 4 7 8 9 6 3 2 5

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

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

  1. पता लगाएं कि दिया गया मैट्रिक्स Toeplitz है या नहीं C++ में

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

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

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