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

काउंटर-क्लॉकवाइज ट्रैवर्सल होगा: 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