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

In Ma Trận Theo Thứ Tự Luân Phiên (Trái Phải Sau Đó Phải Trái) Trong C++


Trong bài toán này, chúng ta được cho một mảng 2D. Nhiệm vụ là in tất cả các phần tử của mảng bắt đầu từ hàng đầu tiên, từ trái sang phải, sau đó từ phải sang trái ở hàng tiếp theo, và tiếp tục luân phiên.

Ví dụ để hiểu vấn đề:

Đầu vào: mảng = {
    {2, 5},
    {4, 9}
} Đầu ra: 2 5 9 4

Để giải quyết, ta in các phần tử theo hướng cho trước (LtoR và RtoL) của một hàng. Sử dụng biến cờ để chuyển hướng in sau mỗi lần lặp.

Đây là giải pháp dễ dàng và hiệu quả với độ phức tạp thời gian = O(R*C).

Ví Dụ

Chương trình minh họa giải pháp:

#include<iostream>
using namespace std;
#define R 3
#define C 3

void printAlternateMatrix(int arr[R][C]) {
    bool direction = true;
    for (int i = 0; i < R; i++) {
        if (direction) {
            for (int j = 0; j < C; j++)
                printf("%d ", arr[i][j]);
        } else {
            for (int j = C - 1; j >= 0; j--)
                printf("%d ", arr[i][j]);
        }
        direction = !direction;
    }
}

int main() {
    int arr[][C] = {
        { 23, 50, 4 },
        { 89, 9, 34 },
        { 75, 1, 61 }
    };
    cout << "Ma trận theo thứ tự luân phiên:\n";
    printAlternateMatrix(arr);
    return 0;
}

Đầu Ra

Ma trận theo thứ tự luân phiên là:

23 50 4 34 9 89 75 1 61