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

सर्पिल तरीके से मैट्रिक्स प्रिंट करें


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

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

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

Input:
The matrix:
 1   2   3   4   5   6
 7   8   9  10  11  12
13  14  15  16  17  18

Output:
Contents of an array as the spiral form
1 2 3 4 5 6 12 18 17 16 15 14 13 7 8 9 10 11 15 16

एल्गोरिदम

dispSpiral(mat, m, n)

इनपुट: मैट्रिक्स मैट, रो और कॉलम m और n.

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

Begin
   currRow := 0 and currCol := 0
   while currRow and currCol are in the matrix range, do
      for i in range currCol and n-1, do
         display mat[currRow, i]
      done

      increase currRow by 1
      for i in range currRow and 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

उदाहरण

#include <iostream>
#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++) {          //print the first row normally
         cout << array[currRow][i]<<" ";
      }
      currRow++;           //point to next row

      for (i = currRow; i < m; ++i) {       //Print the last column
         cout << array[i][n-1]<<" ";
      }

      n--;               //set the n-1th column is current last column

      if ( currRow< m) {         //when currRow is in the range, print the last row
         for (i = n-1; i >= currCol; --i) {
            cout << array[m-1][i]<<" ";
         }
         m--; //decrease the row range
      }

      if (currCol <n) {      //when currCol is in the range, print the fist column
         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. सी प्रोग्राम में मैट्रिक्स विकर्ण पैटर्न में प्रिंट नंबर।

    कार्य विकर्ण पैटर्न के n x ​​n के मैट्रिक्स को प्रिंट करना है। यदि n 3 है तो विकर्ण पैटर्न में एक मैट्रिक्स को प्रिंट करना है - तो आउटपुट इस तरह होगा - उदाहरण Input: 3 Output:    1 2 4    3 5 7    6 8 9 Input: 4 Output:    1 2 4  7    3 5

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

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

  1. दिए गए मैट्रिक्स को C++ में वामावर्त सर्पिल रूप में प्रिंट करें

    इस समस्या में, हमें एक 2-आयामी मैट्रिक्स दिया गया है। और हमारा काम मैट्रिक्स के तत्वों को वामावर्त सर्पिल में से प्रिंट करना है। वामावर्त सर्पिल रूप - यह एक सर्पिल ट्रैवर्सल है जो ऊपर-बाएं से शुरू होता है और वामावर्त दिशा में पहले नीचे-दाएं-ऊपर-बाएं जाता है। वामावर्त ट्रैवर्सल 1 5 9 13 14 15 16