Skip to content
Related Articles

Related Articles

Improve Article
Save Article
Like Article

Php Program to Print a given matrix in reverse spiral form

  • Last Updated : 10 Jan, 2022

Given a 2D array, print it in reverse spiral form. We have already discussed Print a given matrix in spiral form. This article discusses how to do the reverse printing. See the following examples. 
 

Input:
        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
Input:
        1   2   3   4  5   6
        7   8   9  10  11  12
        13  14  15 16  17  18
Output: 
11 10 9 8 7 13 14 15 16 17 18 12 6 5 4 3 2 1

 

 

PHP




<?php
// PHP Code for Print a given  
// matrix in reverse spiral form
$R=3;
$C=6;
  
// Function that print matrix 
// in reverse spiral form.
function ReversespiralPrint($m, $n, array $a)
{
      
    // Large array to initialize it
    // with elements of matrix
    $b;
      
    // k - starting row index
    // l - starting column index
    $k = 0;
    $l = 0;
      
    // Counter for single dimension array
    // in which elements will be stored
    $z = 0;
      
    // Total elements in matrix
    $size = $m*$n;
  
    while ($k < $m && $l < $n)
    {
          
        // Variable to store
        // value of matrix.
        $val;
          
        // Print the first row from 
        // the remaining rows
        for ($i = $l; $i < $n; ++$i)
        {
            $val = $a[$k][$i];
            $b[$z] = $val;
            ++$z;
        }
        $k++;
  
        // Print the last column from
        // the remaining columns 
        for ($i = $k; $i < $m; ++$i)
        {
              
            // printf("%d ", a[i][n-1]);
            $val = $a[$i][$n-1];
            $b[$z] = $val;
            ++$z;
        }
        $n--;
  
        // Print the last row from 
        // the remaining rows
        if ( $k < $m)
        {
            for ($i = $n-1; $i >= $l; --$i)
            {
                  
                // printf("%d ", a[m-1][i]);
                $val = $a[$m-1][$i];
                $b[$z] = $val;
                ++$z;
            }
            $m--;
        }
  
        // Print the first column 
        // from the remaining columns 
        if ($l < $n)
        {
            for ($i = $m - 1; $i >= $k; --$i)
            {
                $val = $a[$i][$l];
                $b[$z] = $val;
                ++$z;
            }
            $l++;
        }
    }
    for ($i = $size - 1; $i >= 0; --$i)
    {
        echo $b[$i]." ";
    }
}
  
    // Driver Code
    $a= array(array(1, 2, 3, 4, 5, 6),
              array(7, 8, 9, 10, 11, 12),
              array(13, 14, 15, 16, 17, 18));
    ReversespiralPrint($R, $C, $a);
  
// This Code is contributed by mits 
?>

Output: 

11 10 9 8 7 13 14 15 16 17 18 12 6 5 4 3 2 1

Please refer complete article on Print a given matrix in reverse spiral form for more details!


My Personal Notes arrow_drop_up
Recommended Articles
Page :

Start Your Coding Journey Now!