Trong bài toán này, chúng ta được cho một ma trận 2 chiều. Nhiệm vụ là in ma trận theo dạng zigzag.
Ví dụ để hiểu vấn đề:
Đầu vào: 12 99 43 10 82 50 15 75 5 Đầu ra: 12 99 43 50 82 10 15 75 5
Để giải quyết, ta in các phần tử của mảng theo cả hai hướng (trái sang phải và phải sang trái) và thay đổi hướng bằng biến cờ.
Ví Dụ
#include <iostream>
using namespace std;
void printZigZagPattern(int row, int col, int a[][5]) {
int evenRow = 0;
int oddRow = 1;
while (evenRow < row) {
for (int i = 0; i < col; i++) {
cout << a[evenRow][i] << " ";
}
evenRow = evenRow + 2;
if (oddRow < row) {
for (int i = col - 1; i >= 0; i--)
cout << a[oddRow][i] << " ";
}
oddRow = oddRow + 2;
}
}
int main() {
int r = 3, c = 3;
int mat[][5] = {
{12, 99, 43},
{10, 82, 50},
{15, 75, 5}
};
cout << "Các phần tử của ma trận theo kiểu ZigZag:\n";
printZigZagPattern(r, c, mat);
return 0;
}
Đầu Ra
Các phần tử của ma trận theo kiểu ZigZag:
12 99 43 50 82 10 15 75 5