📜  以 Z 形式打印矩阵的程序

📅  最后修改于: 2022-05-13 01:57:21.965000             🧑  作者: Mango

以 Z 形式打印矩阵的程序

给定一个n*n阶的方阵,我们需要以Z形式打印矩阵的元素

Input: [[4, 5, 6, 8], 
            [1, 2, 3, 1], 
            [7, 8, 9, 4], 
            [1, 8, 7, 5]]
        
    Output: 4 5 6 8
                3
              8
            1 8 7 5
    
    Input: [[4, 5, 6, 8, 5],
            [1, 2, 3, 1, 4],
            [7, 8, 9, 4, 7],
            [1, 8, 7, 5, 2],
            [7, 9, 5, 6, 9],
            [9, 4, 5, 6, 6]]
        
    Output: 4 5 6 8 5
                  1
                9
              8
            7
           9 4 5 6 6

https://media.geeksforgeeks.org/wp-content/uploads/Capture-16.png

我们需要遍历矩阵的第一行,然后是第二个对角线,然后是最后一行。

C++
// CPP program to print a square matrix in Z form
#include 
using namespace std;
const int MAX = 100;
 
// Function to print a square matrix in Z form
void printZform(int mat[][MAX], int n)
{
    // print first row
    for (int i = 0; i < n; i++)
        cout << mat[0][i] << " ";
 
    // Print second diagonal
    int i = 1, j = n - 2;
    while (i < n && j >= 0)
    {
        cout << mat[i][j] << " ";
        i++;
        j--;
    }
 
    // Print last row
    for (int i = 1; i < n; i++)
        cout << mat[n - 1][i] << " ";
}
 
// Driver function
int main()
{
    int mat[][MAX] = { { 4, 5, 6, 8 },
                       { 1, 2, 3, 1 },
                       { 7, 8, 9, 4 },
                       { 1, 8, 7, 5 } };
    printZform(mat, 4);
    return 0;
}


Java
// Java program to print a
// square matrix in Z form
 
import java.io.*;
import java.lang.*;
 
class GFG {
    public static void diag(int arr[][], int n)
    {
        int i = 0, j, k;
 
        // print first row
        for (j = 0; j < n - 1; j++) {
            System.out.print(arr[i][j] + " ");
        }
 
        // Print diagonal
        k = 1;
        for (i = 0; i < n - 1; i++) {
            for (j = 0; j < n; j++) {
                if (j == n - k) {
                    System.out.print(arr[i][j] + " ");
                    break;
                }
            }
            k++;
        }
        // Print last row
        i = n - 1;
        for (j = 0; j < n; j++)
            System.out.print(arr[i][j] + " ");
 
        System.out.print("\n");
    }
 
    public static void main(String[] args)
    {
        int a[][] = { { 4, 5, 6, 8 },
                      { 1, 2, 3, 1 },
                      { 7, 8, 9, 4 },
                      { 1, 8, 7, 5 } };
 
        diag(a, 4);
    }
}
 
// Code contributed by Mohit Gupta_OMG <(0_o)>


Python3
# Python Program to print a Square
# Matrix in Z form.
 
 
# Function to print Matrix in Z form
def Z_print(Test_list):
 
    Result = []  # Empty list to Store Final Result
 
    # To find the difference b/w whole matrix and first elements
    diff = len(Test_list)-len(Test_list[0])
 
    # Loop to find elements for Z form and to print it.
    for i in range(len(Test_list)):
 
        # If the elements if First or Last then print it as it is...
        if i == 0 or i == len(Test_list)-1:
            Result.append(Test_list[i])
            Result = Result[0]
            print(*Result)
            Result = []
        else:
            Result.append(Test_list[i][len(Test_list)-i-1-diff])
            a = Result[0]
            # Give require spaces for printing elements...
            print("  " * (len(Test_list)-i-1-diff) + str(a))
            Result = []  # Empty list again for storing next pattern
 
    return Result
 
 
# Driver Function
if __name__ == "__main__":
    Test_list1 = [[4, 5, 6, 8],
                  [1, 2, 3, 1],
                  [7, 8, 9, 4],
                  [1, 8, 7, 5]]
    Z_print(Test_list1)  # Passing Matrix to Z_print function


C#
// C# program to print a square
// matrix in Z form
using System;
 
class GFG {
 
    public static void printZform(int[, ] mat, int n)
    {
 
        int i, j;
 
        // print first row
        for (i = 0; i < n; i++) {
            Console.Write(mat[0, i] + " ");
        }
 
        // Print diagonal
        i = 1;
        j = n - 2;
 
        while (i < n && j >= 0) // print diagonal
        {
            Console.Write(mat[i, j] + " ");
            i++;
            j--;
        }
 
        // Print last row
        for (i = 1; i < n; i++)
            Console.Write(mat[n - 1, i] + " ");
    }
 
    // Driver code
    public static void Main()
    {
        int[, ] mat = { { 4, 5, 6, 8 },
                        { 1, 2, 3, 1 },
                        { 7, 8, 9, 4 },
                        { 1, 8, 7, 5 } };
 
        printZform(mat, 4);
    }
}
 
// This code is contributed by vt_m.


PHP
= 0)
    {
        echo $mat[$i][$j] , " ";
        $i++;
        $j--;
    }
 
    // Print last row
    for ( $i = 1; $i < $n; $i++)
        echo $mat[$n - 1][$i] , " ";
}
     
    // Driver Code
    $mat = array(array(4, 5, 6, 8),
                 array(1, 2, 3, 1),
                 array(7, 8, 9, 4),
                 array(1, 8, 7, 5));
    printZform($mat, 4);
     
// This code is contributed by anuj_67.
?>


Javascript


C++14
// CPP program to print a square matrix in Z form
#include 
using namespace std;
const int MAX = 100;
 
// Function to print a square matrix in Z form
void printZform(int mat[][MAX], int n)
{
    int i;
    // print first row except last element
    for (i = 0; i < n-1; i++)
        cout << mat[0][i] << " ";
 
    // Print second diagonal except last element
    for(i=0;i


Java
// Java program to print a
// square matrix in Z form
  
import java.lang.*;
import java.io.*;
  
class GFG {
    public static void diag(int arr[][], int n)
    {
        int i = 0, j, k;
        for(i = 0;i < n;i++){
           for(j = 0;j < n;j++){
              if(i == 0){
                System.out.print(arr[i][j]+" ");
              } else if(j==n-i-1){
                   System.out.print(arr[i][j]+" ");
              } else if(i == n-1){
                   System.out.print(arr[i][j]+" ");
              }
           }
        }
          
    }
  
    public static void main(String[] args)
    {
        int a[][] = { { 4, 5, 6, 8 },
                    { 1, 2, 3, 1 },
                    { 7, 8, 9, 4 },
                    { 1, 8, 7, 5 } };
  
        diag(a, 4);
    }
}


Python3
# Python3 program to print
# square matrix in Z form
def diag(arr, n):
    for i in range(n):
        for j in range(n):
            if(i == 0):
                print(arr[i][j], end = " ")
            elif(j == n-(i+1)):
                print(arr[i][j], end = " ")
            elif(i == n - 1):
                print(arr[i][j], end = " ")
  
# Driver code
if __name__ == '__main__':
    a= [ [ 4, 5, 6, 8 ],
        [ 1, 2, 3, 1 ],
        [ 7, 8, 9, 4 ],
        [ 1, 8, 7, 5 ] ]
  
    diag(a, 4)
# This code is contributed by mohit kumar 29 and improved by Hari Aditya


C#
// C# program to print a
// square matrix in Z form
using System;
  
public class GFG {
    public static void diag(int [,]arr, int n)
    {
        int i = 0, j;
        for(i = 0; i < n; i++)
        {
           for(j = 0; j < n; j++)
           {
              if(i == 0){
                Console.Write(arr[i, j]+" ");
              } else if(i == j){
                   Console.Write(arr[i, j]+" ");
              } else if(i == n-1){
                   Console.Write(arr[i, j]+" ");
              }
           }
        }
          
    }
  
    public static void Main(string[] args)
    {
        int [,]a = { { 4, 5, 6, 8 },
                    { 1, 2, 3, 1 },
                    { 7, 8, 9, 4 },
                    { 1, 8, 7, 5 } };
  
        diag(a, 4);
    }
}
 
// This code is contributed by rrrtnx.


Javascript


C++14
#include
using namespace std;
#define MAX 100
 
// C++ program to print a
// square matrix in Z form
void diag(int arr[][MAX],int n)
{
        int i = 0, j, k;
        for(i = 0;i < n;i++){
           for(j = 0;j < n;j++){
              if(i == 0)
                cout<


或者,我们可以打印第一行和第二个对角线,除了最后一个元素,然后是最后一行。

C++14

// CPP program to print a square matrix in Z form
#include 
using namespace std;
const int MAX = 100;
 
// Function to print a square matrix in Z form
void printZform(int mat[][MAX], int n)
{
    int i;
    // print first row except last element
    for (i = 0; i < n-1; i++)
        cout << mat[0][i] << " ";
 
    // Print second diagonal except last element
    for(i=0;i
输出
4 5 6 8 3 8 1 8 7 5 

时间复杂度: O(n)

辅助空间: O(1)

替代更简单的实现:
感谢 Aathishithan 提出这个建议。

Java

// Java program to print a
// square matrix in Z form
  
import java.lang.*;
import java.io.*;
  
class GFG {
    public static void diag(int arr[][], int n)
    {
        int i = 0, j, k;
        for(i = 0;i < n;i++){
           for(j = 0;j < n;j++){
              if(i == 0){
                System.out.print(arr[i][j]+" ");
              } else if(j==n-i-1){
                   System.out.print(arr[i][j]+" ");
              } else if(i == n-1){
                   System.out.print(arr[i][j]+" ");
              }
           }
        }
          
    }
  
    public static void main(String[] args)
    {
        int a[][] = { { 4, 5, 6, 8 },
                    { 1, 2, 3, 1 },
                    { 7, 8, 9, 4 },
                    { 1, 8, 7, 5 } };
  
        diag(a, 4);
    }
}

Python3

# Python3 program to print
# square matrix in Z form
def diag(arr, n):
    for i in range(n):
        for j in range(n):
            if(i == 0):
                print(arr[i][j], end = " ")
            elif(j == n-(i+1)):
                print(arr[i][j], end = " ")
            elif(i == n - 1):
                print(arr[i][j], end = " ")
  
# Driver code
if __name__ == '__main__':
    a= [ [ 4, 5, 6, 8 ],
        [ 1, 2, 3, 1 ],
        [ 7, 8, 9, 4 ],
        [ 1, 8, 7, 5 ] ]
  
    diag(a, 4)
# This code is contributed by mohit kumar 29 and improved by Hari Aditya

C#

// C# program to print a
// square matrix in Z form
using System;
  
public class GFG {
    public static void diag(int [,]arr, int n)
    {
        int i = 0, j;
        for(i = 0; i < n; i++)
        {
           for(j = 0; j < n; j++)
           {
              if(i == 0){
                Console.Write(arr[i, j]+" ");
              } else if(i == j){
                   Console.Write(arr[i, j]+" ");
              } else if(i == n-1){
                   Console.Write(arr[i, j]+" ");
              }
           }
        }
          
    }
  
    public static void Main(string[] args)
    {
        int [,]a = { { 4, 5, 6, 8 },
                    { 1, 2, 3, 1 },
                    { 7, 8, 9, 4 },
                    { 1, 8, 7, 5 } };
  
        diag(a, 4);
    }
}
 
// This code is contributed by rrrtnx.

Javascript


C++14

#include
using namespace std;
#define MAX 100
 
// C++ program to print a
// square matrix in Z form
void diag(int arr[][MAX],int n)
{
        int i = 0, j, k;
        for(i = 0;i < n;i++){
           for(j = 0;j < n;j++){
              if(i == 0)
                cout<
输出
4 5 6 8 3 8 1 8 7 5 

时间复杂度: O(n*n)

辅助空间: O(1)