Trong bài toán này, chúng ta được cho một ma trận. Nhiệm vụ là in ma trận theo dạng sóng ngược trong một dòng.
Ví dụ làm rõ vấn đề:
Đầu vào: 1 4 6 11 2 5 8 54 7 9 3 43 1 7 4 34 Đầu ra: 11 54 43 34 4 3 8 6 4 5 9 7 1 7 2 1
Để giải quyết, ta in dạng sóng ngược của ma trận: in các phần tử cột cuối theo hướng xuống, sau đó cột倒数 thứ hai theo hướng lên, và cứ thế đến cột đầu tiên.
Ví Dụ
Chương trình minh họa giải pháp:
#include<iostream>
using namespace std;
#define R 4
#define C 4
void printReverseWaveForm(int m, int n, int arr[R][C]) {
int i, j = n - 1, wave = 1;
while (j >= 0) {
if (wave == 1) {
for (i = 0; i < m; i++)
cout << arr[i][j] << " ";
wave = 0;
j--;
} else {
for (i = m - 1; i >= 0; i--)
cout << arr[i][j] << " ";
wave = 1;
j--;
}
}
}
int main() {
int arr[R][C] = {
{ 1, 5, 7, 98 },
{ 15, 22, 45, 12 },
{ 5, 10, 21, 34 },
{ 31, 24, 45, 60 }
};
cout << "Dạng sóng ngược của ma trận cho trước:\n";
printReverseWaveForm(R, C, arr);
return 0;
}
Đầu Ra
Dạng sóng ngược của ma trận cho trước:
98 12 34 60 45 21 45 7 5 22 10 24 31 5 15 1