Chuyển chuỗi thành ma trận vuông (grid) ký tự với số hàng và cột xác định.
Chương trình C++
#include <bits/stdc++.h>
using namespace std;
void convert_grid(string str) {
int l = str.length();
int k = 0, row, column;
row = floor(sqrt(l));
column = ceil(sqrt(l));
if (row * column < l)
row = column;
char s[row][column];
for (int i = 0; i < row; i++) {
for (int j = 0; j < column; j++) {
s[i][j] = str[k];
k++;
}
}
// In lưới
for (int i = 0; i < row; i++) {
for (int j = 0; j < column; j++) {
if (s[i][j] == '\0') break;
cout << s[i][j];
}
cout << endl;
}
}
int main() {
string str = "TUTORIALSPOINT";
convert_grid(str);
return 0;
}
Kết quả
TUTO RIAL SPOI NT
Giải thích
- Chuỗi "TUTORIALSPOINT" độ dài 14
- sqrt(14) ≈ 3.74 → row=3, col=4
- 3×4=12 < 14 → row=4
- Ma trận 4×4, điền hàng ngang, in ra 4 hàng