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

C++ में एक बिंदु से शुरू होकर एक सर्पिल रूप में एक मैट्रिक्स प्रिंट करें


इस समस्या में, हम एक 2d मैट्रिक्स और एक बिंदु P(c,r) हैं। हमारा काम मैट्रिक्स के सभी तत्वों को एक सर्पिल रूप (एंटी-क्लॉकवाइज) में प्रिंट करना है जो किसी दिए गए बिंदु P से शुरू होता है।

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

Input: matrix[][] = {{3, 5, 7} }
Output:

इस समस्या को हल करने के लिए, हम मुद्रण तत्वों के लिए 4 लूप का उपयोग करते हैं। प्रत्येक लूप अपनी दिशा के तत्वों को प्रिंट करता है। हम बिंदु p से अपनी छपाई शुरू करेंगे और सर्पिल रूप को प्रिंट करते रहेंगे।

उदाहरण

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

#include <iostream>
using namespace std;
const int MAX = 100;
void printSpiralMatrix(int mat[][MAX], int r, int c) {
   int i, a = 0, b = 2;
   int low_row = (0 > a) ? 0 : a;
   int low_column = (0 > b) ? 0 : b - 1;
   int high_row = ((a + 1) >= r) ? r - 1 : a + 1;
   int high_column = ((b + 1) >= c) ? c - 1 : b + 1;
   while ((low_row > 0 - r && low_column > 0 - c)) {
      for (i = low_column + 1; i <= high_column && i < c && low_row >= 0; ++i)
         cout<<mat[low_row][i]<<" ";
      low_row -= 1;
      for (i = low_row + 2; i <= high_row && i < r && high_column < c; ++i)
         cout<<mat[i][high_column]<<" ";
      high_column += 1;
      for (i = high_column - 2; i >= low_column && i >= 0 && high_row < r; --i)
         cout << mat[high_row][i]<<" ";
      high_row += 1;
      for (i = high_row - 2; i > low_row && i >= 0 && low_column >= 0; --i)
         cout<<mat[i][low_column]<<" ";
      low_column -= 1;
   }
   cout << endl;
}
int main() {
   int mat[][MAX] = {
      { 1, 4, 7 },
      { 2, 5, 8 },
      { 3, 6, 9 }
   };
   int r = 3, c = 3;
   cout<<"Sprial traversal of matrix starting from point "<<r<<", "<<c<<" is :\n";
   printSpiralMatrix(mat, r, c);
}

आउटपुट

बिंदु 3, 3 से शुरू होने वाले मैट्रिक्स का स्प्रिअल ट्रैवर्सल है -

7 8 5 4 9 6 3 2 1

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

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

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

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

  1. किसी दिए गए स्रोत से गंतव्य तक सभी पथों को C++ में प्रिंट करें

    इस समस्या में हमें एक निर्देशित ग्राफ़ दिया जाता है और हमें स्रोत से ग्राफ़ के गंतव्य तक के सभी पथों को प्रिंट करना होता है। निर्देशित ग्राफ़ किनारों वाला एक ग्राफ़ है जो शीर्ष a से b तक निर्देशित होता है। समस्या को समझने के लिए एक उदाहरण लेते हैं स्रोत =के गंतव्य =पी आउटपुट: K -> T -&