Problem : We have to display elements of matrix in spiral order. For the given matrix mat(4x4).
In Output order of elements should be : 1 2 3 11 12 13 9 8 7 4 5 6
Note : solution proposed is valid for matrix of any order (mxn)
Solution : First we traverse row wise in right direction and then column wise in bottom direction,then again row wise in left direction and again column wise in upward direction, this way we have completed one complete cycle of matrix.We repeat same process until we have row and column elements left.
Algorithm :
Now we will write sample code in java for desired result. Sample running program is as follows :
Sample output when we execute the above program comes as :
1 2 3 11 12 13 9 8 7 4
5 6
First line(1 to 4 ) is outcome of one round of spiral movement
second line(5-6) is outcome of second iteration.
-------------------------------------------------------------------------
Note : solution proposed is valid for matrix of any order (mxn)
Solution : First we traverse row wise in right direction and then column wise in bottom direction,then again row wise in left direction and again column wise in upward direction, this way we have completed one complete cycle of matrix.We repeat same process until we have row and column elements left.
Algorithm :
Initialize row=0 and col = 0, row and column order is mxn
Loop until row < m & col < n (row elements and column elements exist)
First : Iterate row-wise first
for i=col to n
print arr(row,i)
Increment row.
second : Iterate Coulumn in bottom direction from top right
for i = row to m
print arr(i,n)
decrement n.
third : Iterate row in left direction from rith to left
for i=n-1 to col
print arr(m-1,i)
decrement m.
four : Iterate column from bottom to top
for i=m-1 to row
print arr(i,col)
increment col.
repeat from step first.
Now we will write sample code in java for desired result. Sample running program is as follows :
public class SpiralPatternGeneration {
public SpiralPatternGeneration() {
super();
}
public static void spiralPatternGeneration(int[][] mat, int m, int n) {
int col = 0, row = 0;
int i;
while (row < m && col < n) {
for (i = col; i < n; i++) {
System.out.print(mat[row][i] + " ");
}
row++;
for (i = row; i < m; i++) {
System.out.print(mat[i][n - 1]+ " ");
}
n--;
if (row < m) {
for (i = n - 1; i >= col; i--) {
System.out.print(mat[m - 1][i] + " ");
}
m--;
}
if (col < n) {
for (i = m - 1; i >= row; i--) {
System.out.print(mat[i][col] + " ");
}
col++;
}
System.out.println(" ");
}
}
public static void main(String[] args) {
SpiralPatternGeneration spiralPattern = new SpiralPatternGeneration();
int[][] m = { { 1, 2, 3,11 }, { 4, 5, 6,12 }, { 7, 8, 9 ,13} };
spiralPatternGeneration(m, 3, 4);
}
}
Sample output when we execute the above program comes as :
1 2 3 11 12 13 9 8 7 4
5 6
First line(1 to 4 ) is outcome of one round of spiral movement
second line(5-6) is outcome of second iteration.
-------------------------------------------------------------------------
Mua vé tại Aivivu, tham khảo
ReplyDeletevé máy bay đi Mỹ giá bao nhiêu
chuyen bay tu my ve vietnam
vé máy bay từ đức về việt nam
giá vé máy bay từ nhật về việt nam
vé máy bay từ hàn quốc về việt nam
ve may bay tu canada ve viet nam
bảng giá khách sạn cách ly tại hà nội