ДАЮ 30 баллов!!! ПОЖАЛУЙСТА, помогите на С++, именно на языке С++
ограничение по времени на тест: 1 секунда
ограничение по памяти на тест: 256 мегабайт
ввод: стандартный ввод
вывод: стандартный вывод
Имеется квадратная матрица, состоящая из n строк и n столбцов. Требуется разделить матрицу на 4 квадрата (n - четное число),
n2
и каждый квадрат заполнить числами от 1 до n^2/4
Левый верхний и правый нижний квадраты заполняются горизонтальными меандрами, а правый верхний и левый нижний -
вертикальными меандрами (см. пример).
Входные данные В единственной строке задано целое число n (2 <= n <= 32) - размер матрицы.
Выходные данные
Выведите n строк по n чисел в каждой через пробел - необходимую матрицу.
Пример
входные данные
6
выходные данные
1 2 3 1 6 7
6 5 4 2 5 8
7 8 9 3 4 9
1 6 7 1 2 3
2 5 8 6 5 4
3 4 9 7 8 9
Answers & Comments
#include <iostream>
#include <vector>
using namespace std;
void fillMatrix(vector<vector<int>>& matrix, int start, int end, int value) {
for (int i = start; i < end; i++) {
for (int j = start; j < end; j++) {
matrix[i][j] = value++;
}
}
}
void printMatrix(const vector<vector<int>>& matrix) {
int n = matrix.size();
for (int i = 0; i < n; i++) {
for (int j = 0; j < n; j++) {
cout << matrix[i][j] << ' ';
}
cout << endl;
}
}
int main() {
int n;
cin >> n;
vector<vector<int>> matrix(n, vector<int>(n, 0));
int quarterSize = n / 2;
int startValue = 1;
// Левый верхний квадрат - горизонтальный меандр
fillMatrix(matrix, 0, quarterSize, startValue);
// Правый верхний квадрат - вертикальный меандр
fillMatrix(matrix, 0, quarterSize, startValue + quarterSize * quarterSize);
fillMatrix(matrix, quarterSize, n, startValue);
// Правый нижний квадрат - горизонтальный меандр
fillMatrix(matrix, quarterSize, n, startValue + quarterSize * quarterSize + quarterSize * quarterSize);
fillMatrix(matrix, 0, quarterSize, startValue + 2 * quarterSize * quarterSize);
// Левый нижний квадрат - вертикальный меандр
fillMatrix(matrix, quarterSize, n, startValue + 2 * quarterSize * quarterSize + quarterSize * quarterSize);
fillMatrix(matrix, quarterSize, n, startValue + 3 * quarterSize * quarterSize);
printMatrix(matrix);
return 0;
}
https://znanija.com/task/53166228?utm_source=android&utm_medium=share&utm_campaign=question