কম্পিউটার

এন্টিস্পাইরাল আকারে ম্যাট্রিক্স প্রিন্ট করুন


n*n এর একটি 2d ​​অ্যারে দেওয়া হয়েছে এবং কাজ হল প্রদত্ত ম্যাট্রিক্সের অ্যান্টিস্পাইরাল বিন্যাস খুঁজে বের করা

Input : arr[4][4]={1,2,3,4,
   5,6,7,8,
   9,10,11,12
   13,14,15,16}
Output: 10 11 7 6 5 9 13 14 15 16 12 8 4 3 2 1

এন্টিস্পাইরাল আকারে ম্যাট্রিক্স প্রিন্ট করুন

এর জন্য, স্ট্যাক ব্যবহার করা যেতে পারে যেখানে একটি ম্যাট্রিক্সের স্থানান্তরকে স্ট্যাকের ভিতরে ঠেলে দেওয়া যায় এবং বিপরীতভাবে পপ করা যায়

অ্যালগরিদম

START
STEP 1 -> declare stack vector element as stk and variables as int r=4, c=4, i, j, rs=0 and cs=0
Step 2 -> store matrix elements in 2-3 array
Step 3 -> Loop For i=0 and o<4 and i++
   Loop For j=0 and j<4 and j++
      Print arr[i][j]
      End
      Print \n
   End
Step 4 -> Loop While rs<c and cs<r
   Loop For i=rs and i<c and i++
      Push arr[rs][i]
      End
      cs++
   Loop For i=cs and i<r-1 and ++i
      Push arr[r-1][i]
   End
   c—
   IF(cs<r)
      Loop For i=r-1 and i>=rs and –i
         Push arr[r-1][i]
      End
      r- -
   End
   IF(rs<c)
      Loop For i=c-1 and i>=cs and i- -
         Push arr[i][rs]
         End
         Rs++
      End
   End
Step 5 -> Loop While !stk.empty()
Print stk.top()
Call pop()
End
STOP

উদাহরণ

#include<iostream>
#include <bits/stdc++.h>
using namespace std;
int main(){
   stack <int> stk;
   int R=4,C=4,i,j,RS=0,CS=0;
   int mat[R][C] = { {1,2,3, 4}, {5,6,7,8},{9,10,11,12},{13,14,15,16}};
   for(i=0;i<4;i++){
      for(j=0;j<4;j++)
         cout<<mat[i][j]<<" ";
      cout<<"\n";
   }
   while(RS<C&&CS<R) {
      for(i=RS;i<C;i++)
         stk.push(mat[RS][i]);
      CS++;
      for(i=CS;i<R-1;++i)
         stk.push(mat[i][C-1]);
      C--;
   if(CS<R){
      for(i=R-1;i>=RS;--i)
         stk.push(mat[R-1][i]);
      R--;
   }
   if(RS<C){
      for(i=C-1;i>=CS;i--)
         stk.push(mat[i][RS]);
      RS++;
   }
}
while(!stk.empty()){
   cout<<stk.top()<<" ";
   stk.pop();
}

আউটপুট

যদি আমরা উপরের প্রোগ্রামটি চালাই তাহলে এটি নিম্নলিখিত আউটপুট তৈরি করবে

1 2 3 4
5 6 7 8
9 10 11 12
13 14 15 16
10 11 7 6 5 9 13 14 15 16 12 8 4 3 2 1

  1. C প্রোগ্রামে O(1) অতিরিক্ত স্থান ব্যবহার করে n x n স্পাইরাল ম্যাট্রিক্স প্রিন্ট করুন।

  2. সি প্রোগ্রামে ম্যাট্রিক্স তির্যক প্যাটার্নে সংখ্যা মুদ্রণ করুন।

  3. C প্রোগ্রামে তির্যকভাবে নিচের দিকে ম্যাট্রিক্স প্রিন্ট করুন।

  4. একটি প্রদত্ত ম্যাট্রিক্স C++ এ ঘড়ির কাঁটার বিপরীতে সর্পিল আকারে প্রিন্ট করুন