কম্পিউটার টিউটোরিয়াল

C++-এ স্পাইরাল ম্যাট্রিক্স (Spiral Matrix) প্রিন্ট


একটি ম্যাট্রিক্সের এলিমেন্টগুলো স্পাইরাল (ঘুরায়মান) আকারে প্রিন্ট করতে হবে। প্রথম রো, তারপর লাস্ট কলাম, তারপর লাস্ট রো রিভার্স, তারপর ফার্স্ট কলাম রিভার্স - এইভাবে চলবে।

উদাহরণ ম্যাট্রিক্স:

123456
789101112
131415161718
আউটপুট: 1 2 3 4 5 6 12 18 17 16 15 14 13 7 8 9 10 11 15 16

সমাধান: currRow, currCol ট্র্যাক করিয়ে চারদিকে লুপ চালিয়ে প্রিন্ট করব। প্রতিটি লেয়ারের পর রেঞ্জ আপডেট করব।

উদাহরণ (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++){
            cout << array[currRow][i] << " ";
        }
        currRow++;
        for (i = currRow; i < m; ++i){
            cout << array[i][n-1] << " ";
        }
        n--;
        if (currRow < m){
            for (i = n-1; i >= currCol; --i){
                cout << array[m-1][i] << " ";
            }
            m--;
        }
        if (currCol < n){
            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

  1. C++-এ ম্যাট্রিক্সের রো-ওয়াইজ ও কলাম-ওয়াইজ ট্রাভার্সাল

  2. সি++-এ স্পায়রাল ম্যাট্রিক্স III (Spiral Matrix III)

  3. C++-এ একটি ম্যাট্রিক্স কাউন্টার-ক্লকওয়াইজ স্পাইরাল ফর্মে প্রিন্ট করা

  4. C++-এ বুলিয়ান ম্যাট্রিক্স সমস্যা (Boolean Matrix Question)