এই সমস্যায় একটি ২-মাত্রিক ম্যাট্রিক্স দেওয়া আছে। আমাদের ম্যাট্রিক্সের উপাদানগুলো কাউন্টার-ক্লকওয়াইজ স্পাইরাল আকারে প্রিন্ট করতে হবে।
কাউন্টার-ক্লকওয়াইজ স্পাইরাল ফর্ম হলো একটি স্পাইরাল ট্রাভার্সাল যা শীর্ষ-বাম কোণ থেকে শুরু হয়ে 반-ঘড়ির দিকে নিচে-ডানে-উপর-বাম দিকে ঘুরে।
উদাহরণস্বরূপ, ৪x৪ ম্যাট্রিক্সের কাউন্টার-ক্লকওয়াইজ ট্রাভার্সাল হবে: 1 5 9 13 14 15 16 12 8 4 3 2 6 10 11 7।
উদাহরণ
ইনপুট: 2 4 6 1 7 9 5 0 3 আউটপুট: 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