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

In ma trận theo đường chéo xuống trong chương trình C

Cho mảng hai chiều kích thước n x n, nhiệm vụ là in các phần tử của ma trận theo hướng đường chéo xuống.

"Đường chéo xuống" nghĩa là duyệt mảng theo các đường chéo từ trên xuống dưới như hình minh họa:

In ma trận theo đường chéo xuống trong chương trình C

Chương trình sẽ in 1, sau đó chuyển sang 2, rồi xuống đường chéo đến 4, và tiếp tục...

Ví dụ

Input: Matrix[3][3] = { {1, 2, 3}, {4, 5, 6}, {7, 8, 9} }
Output: 1 2 4 3 5 7 6 8 9

Thuật toán

int diagonally_down(int mat[n][n])
BẮT ĐẦU
BƯỚC 1: KHAI BÁO i, j, row, col KIỂU INT
BƯỚC 2: VỚI i = 0 ĐẾN i < n, i++
    GÁN row = 0
    GÁN col = i
    KHI col >= 0 LẶP
        IN mat[row][col]
        TĂNG row LÊN 1, GIẢM col XUỐNG 1
    KẾT THÚC KHI
KẾT THÚC VỚI i
BƯỚC 3: VỚI j = 1 ĐẾN j < n, j++
    GÁN row = j
    GÁN col = n-1
    KHI row < n LẶP
        IN mat[row][col]
        TĂNG row LÊN 1, GIẢM col XUỐNG 1
    KẾT THÚC KHI
KẾT THÚC VỚI j
KẾT THÚC

Chương trình C ví dụ

#include <stdio.h>
#define n 3

int diagonally_down(int mat[n][n]) {
    int i, j, row, col;
    // In các phần tử phía trên
    for (i = 0; i < n; i++) {
        row = 0;
        col = i;
        while (col >= 0) { // Di chuyển xuống từ hàng đầu
            printf("%d ", mat[row++][col--]);
        }
    }
    // In các phần tử phía dưới
    for (j = 1; j < n; j++) {
        row = j;
        col = n - 1;
        while (row < n) { // Di chuyển từ cột cuối
            printf("%d ", mat[row++][col--]);
        }
    }
}

int main() {
    int mat[][n] = {
        {1, 2, 3},
        {4, 5, 6},
        {7, 8, 9}
    };
    diagonally_down(mat);
    return 0;
}

Kết quả

1 2 4 3 5 7 6 8 9