Matriz de impresión en "zigzag"

Matriz de impresión en "zigzag"

Descripción del Título

Dada una matriz, imprima esta matriz en zigzag, como se muestra en el ejemplo.

Ingrese una descripción:

La entrada contiene varias líneas, la primera línea contiene dos números enteros n y m (1 ≤ n, m ≤ 200) (1 \ leq n, m \ leq 200)( 1n ,metro2 0 0 ) , que representa el número de filas y columnas de la matriz, las n filas siguientes, cada fila de m enteros, que representan la matrizmatriz (1 ≤ matriz [i] [j] ≤ 40000) matriz (1 \ leq matriz [i] [j] \ leq 40000)m a t r i x ( 1m a t r i x [ i ] [ j ]4 0 0 0 0 )

Descripción de salida:

Salida una línea, que representa la matriz de salida "Zigzag".

Ejemplo 1
entrar
4 4
1 2 3 4
5 6 7 8
9 10 11 12
13 14 15 16
Salida
1 2 5 9 6 3 4 7 10 13 14 11 8 12 15 16
Observaciones:

Complejidad espacial adicional O (1) O (1)O ( 1 )


responder:

Use dos puntos para mantener cada diagonal. El primer punto (tr, tc) comienza desde la esquina superior izquierda y se mueve hacia la derecha y hacia abajo; el segundo punto (dr, dc) comienza desde la esquina superior izquierda y baja y hacia Muévase hacia la derecha y genere los elementos conectados por dos puntos cada vez.

Código:
#include <cstdio>

using namespace std;

const int N = 200;

int n, m;
int a[N][N];

void print( int tr, int tc, int dr, int dc, bool &flag ) {
    
    
    if ( flag ) {
    
    
        while ( tr <= dr ) printf("%d ", a[tr++][tc--]);
    } else {
    
    
        while ( dr >= tr ) printf("%d ", a[dr--][dc++]);
    }
}

int main(void) {
    
    
    scanf("%d%d", &n, &m);
    for ( int i = 0; i < n; ++i ) {
    
    
        for ( int j = 0; j < m; ++j )
            scanf("%d", a[i] + j);
    }
    int tr = 0, tc = 0;
    int dr = 0, dc = 0;
    bool flag = false;
    while ( tr < n ) {
    
    
        print( tr, tc, dr, dc, flag );
        tr += ( tc == m - 1 );
        tc += ( tc != m - 1 );
        dc += ( dr == n - 1 );
        dr += ( dr != n - 1 );
        flag = !flag;
    }
    return 0;
}

Supongo que te gusta

Origin blog.csdn.net/MIC10086/article/details/109222611
Recomendado
Clasificación