Print matrix in diagonal pattern
PROBLEM :
Given a matrix M of n*n size, the task is to complete the function which prints its elements in diagonal pattern as depicted below.
matrix-diagonal-traversal
Input:
The first line of input contains an integer denoting the no of test cases. Then T test cases follow. Each test case contains an integer N denoting the size of the square matrix. In the next line are N*N space separated values of the matrix M.
Output:
For each test case output will be the space separated values of the matrix elements in diagnol form.
Constraints:
1<=T<=100
1<=n<=20
Example(To be used only for expected output):
Input:
2
3
1 2 3 4 5 6 7 8 9
2
1 2 3 4
Output:
1 2 4 7 5 3 6 8 9
1 2 3 4
--------------------------------------------------------------------------------
SIMPLE c++ IMPLEMENTATION :
--------------------------------------------------------------------------------
/*You are required to complete this method */
void printMatrixDiagonal(int mat[MAX][MAX], int no)
{
int i,j,k ;
bool direction=true ;
i=0 ;
j=0 ;
for(k=0;k<no*no;)
{
if(direction)
{
for(;i>=0&&j<no;i--,j++)
{
cout<<mat[i][j]<<" " ;
k++ ;
}
if(i<0&&j<=no-1)
i=0 ;
if(j==no)
{
i=i+2 ;
j-- ;
}
}
else
{
for(;i<no&&j>=0;i++,j--)
{
cout<<mat[i][j]<<" " ;
k++ ;
}
if(j<0&&i<=no-1)
j=0 ;
if(i==no)
{
j=j+2 ;
i-- ;
}
}
direction=!direction ;
}
}
---------------------------------------------------------------------------------
Given a matrix M of n*n size, the task is to complete the function which prints its elements in diagonal pattern as depicted below.
matrix-diagonal-traversal
Input:
The first line of input contains an integer denoting the no of test cases. Then T test cases follow. Each test case contains an integer N denoting the size of the square matrix. In the next line are N*N space separated values of the matrix M.
Output:
For each test case output will be the space separated values of the matrix elements in diagnol form.
Constraints:
1<=T<=100
1<=n<=20
Example(To be used only for expected output):
Input:
2
3
1 2 3 4 5 6 7 8 9
2
1 2 3 4
Output:
1 2 4 7 5 3 6 8 9
1 2 3 4
--------------------------------------------------------------------------------
SIMPLE c++ IMPLEMENTATION :
--------------------------------------------------------------------------------
/*You are required to complete this method */
void printMatrixDiagonal(int mat[MAX][MAX], int no)
{
int i,j,k ;
bool direction=true ;
i=0 ;
j=0 ;
for(k=0;k<no*no;)
{
if(direction)
{
for(;i>=0&&j<no;i--,j++)
{
cout<<mat[i][j]<<" " ;
k++ ;
}
if(i<0&&j<=no-1)
i=0 ;
if(j==no)
{
i=i+2 ;
j-- ;
}
}
else
{
for(;i<no&&j>=0;i++,j--)
{
cout<<mat[i][j]<<" " ;
k++ ;
}
if(j<0&&i<=no-1)
j=0 ;
if(i==no)
{
j=j+2 ;
i-- ;
}
}
direction=!direction ;
}
}
---------------------------------------------------------------------------------
Comments
Post a Comment