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

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

এই সমস্যায় একটি ২-মাত্রিক ম্যাট্রিক্স দেওয়া আছে। আমাদের ম্যাট্রিক্সের উপাদানগুলো কাউন্টার-ক্লকওয়াইজ স্পাইরাল আকারে প্রিন্ট করতে হবে।

কাউন্টার-ক্লকওয়াইজ স্পাইরাল ফর্ম হলো একটি স্পাইরাল ট্রাভার্সাল যা শীর্ষ-বাম কোণ থেকে শুরু হয়ে 반-ঘড়ির দিকে নিচে-ডানে-উপর-বাম দিকে ঘুরে।

উদাহরণস্বরূপ, ৪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
  1. ম্যাট্রিক্সকে অ্যান্টি-স্পাইরাল ফর্মে প্রিন্ট করা

  2. C++ কোড: দেওয়া ম্যাট্রিক্স ভালো কিনা চেক করা

  3. C++-এ দেওয়া ম্যাট্রিক্স ট্যাপলিটজ (Toeplitz) কিনা তা খুঁজুন

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