Print matrix in spiral form
Question : The question is pretty much clear that we have to print the matrix in spiral form. So for this we will take four pointers pointing to top, down, left & right of the given matrix. Next we will take dir variable which will basically store the direction that is :
dir = 0 means from left to right
dir = 1 means from top to down
dir = 2 means from right to left
dir = 3 means from down to top
Rest you can easily figure out by below images :
#include<bits/stdc++.h> using namespace std; void show(int row, int col, int a[r][c]) { int dir = 0, top = 0, down = r-1, left = 0, right = c-1, i, j; while(left <= right && top <= down) { if(dir == 0) { for(i = top; i <= right; i++) cout << a[top][i] << " "; top++; } else if(dir == 1) { for(i = top; i <= down; i++) cout << a[i][right] << " "; right--; } else if(dir == 2) { for(i = right; i >= left; i--) cout << a[down][i] << " "; down--; } else if(dir == 3) { for(i = down; i >= top; i--) cout << a[i][left] << " "; left++; dir = -1; } dir++; } } int main() { int a[r][c] = { {1, 2, 3, 4, 5}, {6, 7, 8, 9, 10}, {11, 12, 13, 14, 15}, {16, 17, 18, 19, 20}, {21, 22, 23, 24, 25}, {26, 27, 28, 29, 30} }; show(r, c, a); return 0; }
Pic Credits : GeeksforGeeks
Video reference : Tech Dose
No comments:
If you have any doubt or suggestion let me know in comment section.