以 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
我们需要遍历矩阵的第一行,然后是第二个对角线,然后是最后一行。
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)