Trong bài toán này, chúng ta được cho một chuỗi và một số nguyên n. Nhiệm vụ là in chuỗi đó theo mô hình sóng trên n dòng.
Ví dụ để hiểu vấn đề:
Đầu vào: Tutorial, n = 3 Đầu ra: T r U o i s t l
Mô hình sóng in bằng cách in từng ký tự của chuỗi lần lượt ở dòng tiếp theo và cách một tab so với phần tử tiếp theo cho đến dòng thứ n. Sau đó in ngược lên trên đến dòng đầu tiên và lặp lại cho đến hết ký tự.
Ví Dụ
Chương trình minh họa giải pháp:
#include<bits/stdc++.h>
using namespace std;
void printWavePattern(string s, int n) {
if (n == 1) {
cout << s;
return;
}
int len = s.length();
char a[len][len] = { };
int row = 0;
bool down;
for (int i = 0; i < len; i++) {
a[row][i] = s[i];
if (row == n - 1)
down = false;
else if (row == 0)
down = true;
(down) ? (row++) : (row--);
}
for (int i = 0; i < n; i++) {
for (int j = 0; j < len; j++) {
cout << a[i][j] << " ";
}
cout << endl;
}
}
int main() {
string str = "TutorialsPoint";
int n = 4;
cout << n << " dòng mô hình sóng '" << str << "' là:\n";
printWavePattern(str, n);
return 0;
}
Đầu Ra
4 dòng mô hình sóng 'TutorialsPoint' là: T a n u i l t t r s o o P