ধরুন আমাদের একটি ম্যাট্রিক্স আছে এবং আমাদের ম্যাট্রিক্স উপাদানগুলিকে সর্পিল ভাবে প্রিন্ট করতে হবে। প্রথমে প্রথম সারি থেকে শুরু করে, পুরো বিষয়বস্তুটি প্রিন্ট করুন এবং তারপরে প্রিন্ট করার জন্য শেষ কলামটি অনুসরণ করুন, তারপরে শেষ সারিটি, এবং এইভাবে এটি উপাদানগুলিকে সর্পিল ফ্যাশনে প্রিন্ট করে। তাই ম্যাট্রিক্স যদি −
এর মত হয়| 1 | 2 | 3 | 4 | ৷5 | 6 |
| 7 | 8 | 9 | 10 | 11 | 12 |
| 13 | 14 | ৷15 | 16 | ৷17 | 18 |
তারপর আউটপুট হবে [1 2 3 4 5 6 12 18 17 16 15 14 13 7 8 9 10 11 15 16]
এটি সমাধান করতে, আমরা এই পদক্ষেপগুলি অনুসরণ করব -
-
currRow :=0 এবং currCol :=0
-
যখন currRow এবং currCol ম্যাট্রিক্স পরিসরে থাকে
-
আমি রেঞ্জ currCol এবং n-1 এর জন্য,
-
প্রদর্শন ম্যাট[currRow, i]
-
-
currRow 1 দ্বারা বাড়ান
-
আমি রেঞ্জ currRow এবং m-1 এর জন্য, do
-
প্রদর্শন ম্যাট[i, n-1]
-
-
n 1 দ্বারা হ্রাস করুন
-
যদি currRow
-
i এর জন্য :=n-1 নিচে currCol, do
-
প্রদর্শন ম্যাট[m-1, i]
-
-
m 1 দ্বারা হ্রাস করুন
-
যদি currCol
-
i এর জন্য :=m-1 নিচে currRow, do
-
প্রদর্শন ম্যাট[i, currCol]
-
-
currCol 1 দ্বারা বৃদ্ধি করুন
-
-
-
উদাহরণ(C++)
আসুন আরও ভালোভাবে বোঝার জন্য নিচের বাস্তবায়ন দেখি −
#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] [7,8,9,10,11,12] [13,14,15,16,17,18]]
আউটপুট
1 2 3 4 5 6 12 18 17 16 15 14 13 7 8 9 10 11 15 16