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 ;
     }
}


---------------------------------------------------------------------------------

Comments

Popular posts from this blog

Count ways to N'th Stair(Order does not matter)

Replace all ‘0’ with ‘5’ in an input Integer

Chocolate Distribution Problem

Remove characters from the first string which are present in the second string

Primality Test ( CodeChef Problem code: PRB01 )