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

Chương trình C++ in ma trận theo dạng Z

In các phần tử của ma trận theo hình chữ Z. Ví dụ ma trận 4x4:

5 8 7 1
2 3 6 4
1 7 8 9
4 8 1 5

In theo Z: 5, 8, 7, 1, 6, 7, 4, 8, 1, 5

Thuật toán

  1. In hàng đầu tiên (từ cột 0 đến n-1).
  2. In đường chéo phụ: từ (1, n-2) đến (n-2, 1) - chỉ số hàng tăng, cột giảm.
  3. In hàng cuối cùng (từ cột 1 đến n-1).

Code ví dụ

#include <iostream>
#define MAX 4
using namespace std;

void printMatrixZ(int mat[][MAX], int n) {
    // In hàng đầu
    for(int i = 0; i < n; i++) {
        cout << mat[0][i] << " ";
    }
    
    // In đường chéo phụ
    int i = 1, j = n - 2;
    while(i < n && j >= 0) {
        cout << mat[i][j] << " ";
        i++;
        j--;
    }
    
    // In hàng cuối (bỏ phần tử đầu đã in ở đường chéo)
    for(int i = 1; i < n; i++) {
        cout << mat[n-1][i] << " ";
    }
}

int main() {
    int matrix[][MAX] = {
        {5, 8, 7, 1},
        {2, 3, 6, 4},
        {1, 7, 8, 9},
        {4, 8, 1, 5}
    };
    printMatrixZ(matrix, 4);
    return 0;
}

Kết quả

5 8 7 1 6 7 4 8 1 5

Độ phức tạp

  • Thời gian: O(n) - chỉ duyệt qua ~3n phần tử
  • Không gian: O(1)

Lưu ý

Chỉ áp dụng cho ma trận vuông (n x n). Với ma trận không vuông, cần điều chỉnh logic đường chéo.