Python implementa matriz cuadrada serpentina digital
Entrada: mm digitalesm nn_nSalida
:mmm filannmatriz cuadrada serpentina digital de n columnas
1. Comenzando desde la esquina superior izquierda de la matriz cuadrada, rellene en el sentido de las agujas del reloj.
Inicializar un mmm filannUna matriz con n columnas, todos los elementos son 0; luego comience desde la primera posición, complete los números en orden, complete una columna o una fila, luego gire para completar la siguiente columna o fila, y finalmente imprima el número en un Matriz cuadrada en forma de serpiente. el código se muestra a continuación:
def print_snake_matrix(m, n):
matrix = [[0]*n for i in range(m)]
num = 1
i, j = 0, 0
while num <= m*n:
while j < n and matrix[i][j] == 0:
matrix[i][j] = num
num += 1
j += 1
j -= 1
i += 1
while i < m and matrix[i][j] == 0:
matrix[i][j] = num
num += 1
i += 1
i -= 1
j -= 1
while j >= 0 and matrix[i][j] == 0:
matrix[i][j] = num
num += 1
j -= 1
j += 1
i -= 1
while i >= 0 and matrix[i][j] == 0:
matrix[i][j] = num
num += 1
i -= 1
i += 1
j += 1
for row in matrix:
for num in row:
print(num, end='\t')
print()
implementar
print_snake_matrix(4, 6)
producción
1 2 3 4 5 6 16 17 18
19 20 7
15 24 23 22 21
8 14 13 12 11 10 9
implementación c++
#include <iostream>
#include <vector>
using namespace std;
void print_snake_matrix(int m, int n) {
vector<vector<int>> matrix(m, vector<int>(n, 0));
int num = 1;
int i = 0, j = 0;
while (num <= m * n) {
while (j < n && matrix[i][j] == 0) {
matrix[i][j] = num;
num++;
j++;
}
j--;
i++;
while (i < m && matrix[i][j] == 0) {
matrix[i][j] = num;
num++;
i++;
}
i--;
j--;
while (j >= 0 && matrix[i][j] == 0) {
matrix[i][j] = num;
num++;
j--;
}
j++;
i--;
while (i >= 0 && matrix[i][j] == 0) {
matrix[i][j] = num;
num++;
i--;
}
i++;
j++;
}
for (auto row : matrix) {
for (int num : row) {
cout << num << "\t";
}
cout << endl;
}
}
2. Comenzando desde la esquina superior derecha de la matriz cuadrada, rellene en sentido contrario a las agujas del reloj.
Como se llena desde la esquina superior derecha, la posición inicial es 0 0Línea 0 norte - 1 norte-1norte−1 columna Las secuencias de llenado subsiguientes también deben girarse en sentido contrario a las agujas del reloj para garantizar que los números llenados estén en el orden correcto. Aparte de eso, la implementación de este código es básicamente la misma que la del código anterior, utilizando cuatro bucles while para completar los números en orden. el código se muestra a continuación:
def print_snake_matrix(m, n):
matrix = [[0]*n for i in range(m)]
num = 1
i, j = 0, n-1
while num <= m*n:
while j >= 0 and matrix[i][j] == 0:
matrix[i][j] = num
num += 1
j -= 1
j += 1
i += 1
while i < m and matrix[i][j] == 0:
matrix[i][j] = num
num += 1
i += 1
i -= 1
j += 1
while j < n and matrix[i][j] == 0:
matrix[i][j] = num
num += 1
j += 1
j -= 1
i -= 1
while i >= 0 and matrix[i][j] == 0:
matrix[i][j] = num
num += 1
i -= 1
i += 1
j -= 1
for row in matrix:
for num in row:
print(num, end='\t')
print()
implementar
print_snake_matrix(4, 6)
producción
6 5 4 3 2 1
7 20 19 18 17 16
8 21 22 23 24 15
9 10 11 12 13 14
implementación c++
void print_snake_matrix(int m, int n) {
vector<vector<int>> matrix(m, vector<int>(n, 0));
int num = 1;
int i = 0, j = n - 1;
while (num <= m * n) {
while (j >= 0 && matrix[i][j] == 0) {
matrix[i][j] = num;
num++;
j--;
}
j++;
i++;
while (i < m && matrix[i][j] == 0) {
matrix[i][j] = num;
num++;
i++;
}
i--;
j++;
while (j < n && matrix[i][j] == 0) {
matrix[i][j] = num;
num++;
j++;
}
j--;
i--;
while (i >= 0 && matrix[i][j] == 0) {
matrix[i][j] = num;
num++;
i--;
}
i++;
j--;
}
for (auto row : matrix) {
for (int num : row) {
cout << num << "\t";
}
cout << endl;
}
}