একটি ২ডি অ্যারে n*n দেওয়া আছে। দায়িত্ব হলো দিয়ে गये ম্যাট্রিক্সের অ্যান্টি-স্পাইর্যাল অ্যারেঞ্জমেন্ট বের করা।
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=rs and –i Push arr[r-1][i] End r- - End IF(rs =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#include using namespace std; int main(){ stack 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< =RS;--i) stk.push(mat[R-1][i]); R--; } if(RS =CS;i--) stk.push(mat[i][RS]); RS++; } } while(!stk.empty()){ cout< আউটপুট
যদি উপরের প্রোগ্রামটি রান করি তবে নিচের আউটপুট জেনারেট হবে
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