ภาพรวมปัญหา
ได้รับสตริงและจำนวนบรรทัด n ต้องพิมพ์สตริงในรูปแบบ Wave Pattern จำนวน n บรรทัด
ตัวอย่าง
Input: "Tutorial", n = 3 Output: T r U o i s t t l
วิธีแก้ปัญหา
ใช้การจำลองการเคลื่อนที่ลง-ขึ้น (zigzag) บนกริด 2D วางตัวอักษรตามแถว แล้วพิมพ์แถวละบรรทัด
ตัวอย่างโค้ด C++
#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 << " Line wave pattern '" << str << "' is:\n";
printWavePattern(str, n);
return 0;
}
ผลลัพธ์ (Output)
4 Line wave pattern 'TutorialsPoint' is: T a n u i l t r s o o o P