Cho chuỗi str. Nhiệm vụ: in chuỗi theo hình dấu '+' trong ma trận vuông. Ma trận vuông có số hàng = số cột = độ dài chuỗi (phải là số lẻ).
Yêu cầu
- Chuỗi in ngang hàng giữa.
- Chuỗi in dọc cột giữa.
- Các vị trí còn lại in 'x'.
- Độ dài chuỗi phải lẻ (để có tâm chính xác).
Ví dụ 1
Input – "Point" (5 ký tự)
Output
x x P x x x x o x x P o i n t x x n x x x x t x x
Ví dụ 2
Input – "this" (4 ký tự)
Output – "Pattern not possible" (độ dài chẵn)
Thuật toán
- Kiểm tra độ dài chuỗi lẻ. Nếu chẵn → báo lỗi.
- Tạo ma trận n×n, fill 'x'.
- mid = n/2.
- Gán hàng giữa: matrix[mid][j] = str[j].
- Gán cột giữa: matrix[i][mid] = str[i].
- In ma trận.
Ví dụ code
#include <iostream>
#include <vector>
#include <string>
using namespace std;
void printPlusPattern(const string& str) {
int n = str.length();
if (n % 2 == 0) {
cout << "Pattern not possible (length must be odd)" << endl;
return;
}
vector<vector<char>> mat(n, vector<char>(n, 'x'));
int mid = n / 2;
for (int i = 0; i < n; i++) {
mat[i][mid] = str[i]; // Cột giữa
mat[mid][i] = str[i]; // Hàng giữa
}
for (int i = 0; i < n; i++) {
for (int j = 0; j < n; j++) {
cout << mat[i][j] << ' ';
}
cout << endl;
}
}
int main() {
printPlusPattern("TUTOR");
return 0;
}
Kết quả
x x T x x x x U x x T U T O R x x O x x x x R x x
Lưu ý: Code dùng vector