Consejos de Python: matriz cuadrada serpentina

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-1norte1 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;
    }
}

Supongo que te gusta

Origin blog.csdn.net/apr15/article/details/130629500
Recomendado
Clasificación