原文:

给定 2d 数组,以反向螺旋形式打印。 我们已经讨论过。 本文讨论了如何进行反向打印。 请参阅以下示例。

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

c

// this is a modified code of 
// https://www.geeksforgeeks.org/print-a-given-matrix-in-spiral-form/ 
#include  
#define r 3 
#define c 6 
using namespace std; 
// function that print matrix in reverse spiral form. 
void reversespiralprint(int m, int n, int a[r][c]) 
{ 
    // large array to initialize it 
    // with elements of matrix 
    long int b[100]; 
    /* k - starting row index 
    l - starting column index*/
    int i, k = 0, l = 0; 
    // counter for single dimension array 
    //in which elements will be stored 
    int z = 0; 
    // total elements in matrix 
    int size = m*n; 
    while (k < m && l < n) 
    { 
        // variable to store value of matrix. 
        int val; 
        /* print the first row from the remaining rows */
        for (i = l; i < n;   i) 
        { 
            // printf("%d ", a[k][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) 
            { 
                // printf("%d ", a[i][l]); 
                val = a[i][l]; 
                b[z] = val; 
                  z; 
            } 
            l  ; 
        } 
    } 
    for (int i=size-1 ; i>=0 ; --i) 
    { 
        cout<

java

// java code for print a given matrix in  
// reverse spiral form 
class gfg { 
    public static int r = 3, c = 6; 
    // function that print matrix in reverse spiral form. 
    public static void reversespiralprint(int m, int n, 
                                             int a[][]) 
    { 
        // large array to initialize it 
        // with elements of matrix 
        long b[] = new long[100]; 
        /* k - starting row index 
        l - starting column index*/
        int i, k = 0, l = 0; 
        // counter for single dimension array 
        //in which elements will be stored 
        int z = 0; 
        // total elements in matrix 
        int size = m * n; 
        while (k < m && l < n) 
        { 
            // variable to store value of matrix. 
            int 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) 
            { 
                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) 
                { 
                    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 (int x = size-1 ; x>=0 ; --x) 
        { 
            system.out.print(b[x] " "); 
        } 
    }     
    /* driver program to test above function */
    public static void main(string[] args)  
    { 
        int a[][] = { {1, 2, 3, 4, 5, 6}, 
                    {7, 8, 9, 10, 11, 12}, 
                    {13, 14, 15, 16, 17, 18}}; 
        reversespiralprint(r, c, a); 
    } 
  } 
// this code is contributed by arnav kr. mandal. 

python3

# python3 code to print a given   
# matrix in reverse spiral form 
# this is a modified code of 
# https:#www.geeksforgeeks.org/print-a-given-matrix-in-spiral-form/ 
r, c = 3, 6
def reversespiralprint(m, n, a): 
    # large array to initialize it 
    # with elements of matrix 
    b = [0 for i in range(100)] 
    #/* k - starting row index 
    #l - starting column index*/ 
    i, k, l = 0, 0, 0
    # counter for single dimension array 
    # in which elements will be stored 
    z = 0
    # total elements in matrix 
    size = m * n 
    while (k < m and l < n): 
        # variable to store value of matrix. 
        val = 0
        # print the first row  
        # from the remaining rows  
        for i in range(l, n): 
            # printf("%d ", a[k][i]) 
            val = a[k][i] 
            b[z] = val 
            z  = 1
        k  = 1
        # print the last column 
        # from the remaining columns 
        for i in range(k, m): 
            # printf("%d ", a[i][n-1]) 
            val = a[i][n - 1] 
            b[z] = val 
            z  = 1
        n -= 1
        # print the last row  
        # from the remaining rows 
        if (k < m): 
            for i in range(n - 1, l - 1, -1): 
                # printf("%d ", a[m-1][i]) 
                val = a[m - 1][i] 
                b[z] = val 
                z  = 1
        m -= 1
        # print the first column  
        # from the remaining columns  
        if (l < n): 
            for i in range(m - 1, k - 1, -1): 
                # printf("%d ", a[i][l]) 
                val = a[i][l] 
                b[z] = val 
                z  = 1
            l  = 1
    for i in range(size - 1, -1, -1): 
        print(b[i], end = " ") 
# driver code 
a = [[1, 2, 3, 4, 5, 6], 
     [7, 8, 9, 10, 11, 12], 
     [13, 14, 15, 16, 17, 18]] 
reversespiralprint(r, c, a) 
# this code is contributed by mohit kumar 

c#

// c# code for print a given matrix in  
// reverse spiral form 
using system; 
class gfg { 
    public static int r = 3, c = 6; 
    // function that print matrix in reverse spiral form. 
    public static void reversespiralprint(int m, int n, 
                                            int [,]a) 
    { 
        // large array to initialize it 
        // with elements of matrix 
        long []b = new long[100]; 
        /* k - starting row index 
        l - starting column index*/
        int i, k = 0, l = 0; 
        // counter for single dimension array 
        //in which elements will be stored 
        int z = 0; 
        // total elements in matrix 
        int size = m * n; 
        while (k < m && l < n) 
        { 
            // variable to store value of matrix. 
            int 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) 
            { 
                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) 
                { 
                    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 (int x = size-1 ; x>=0 ; --x) 
        { 
        console.write(b[x] " "); 
        } 
    }  
    /* driver program to test above function */
    public static void main()  
    { 
        int [ ,]a = { {1, 2, 3, 4, 5, 6}, 
                    {7, 8, 9, 10, 11, 12}, 
                    {13, 14, 15, 16, 17, 18}}; 
        reversespiralprint(r, c, a); 
    } 
} 
// this code is contributed by vt_m. 

php

= $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  
?> 

输出

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