Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Lập Trình C

In ma trận zigzag (chéo) trong C

Bài toán

In ma trận vuông n×n theo đường chéo xen kên (zigzag), thay đổi hướng sau mỗi đường chéo.

Ví dụ 3×3

Ma trận:
10 20 30
40 50 60
70 80 90

Output: 10 20 40 70 50 30 60 80 90

In ma trận zigzag (chéo) trong C

Thuật toán

Duyệt theo đường chéo, dùng cờ flag đổi hướng (chéo lên/xuống). Xử lý 2 nửa: nửa trên (độ dài tăng) và nửa dưới (giảm).

Mã nguồn C

#include <stdio.h>
#include <stdbool.h>
#define C 3
#define min(a,b) ((a>b)?b:a)
#define max(a,b) ((a>b)?a:b)

int main() {
    int k=3, l=3;
    int mat[3][3] = {{10,20,30},{40,50,60},{70,80,90}};
    int row=0, col=0;
    bool flag = false;
    int mn = min(k,l);

    // Nửa trên
    for (int len=1; len<=mn; ++len) {
        for (int i=0; i0; --diag) {
        int len = (diag > mn) ? mn : diag;
        for (int i=0; i

Kết quả

10 20 40 70 50 30 60 80 90