на с++ Квадратну матрицю розміром NxN називають правильною, якщо в ній немає квадратів 2х2, що складаються лише з 0 або лише з 1. Перевірити, чи є створена матриця правильною.
Ответы
#include <iostream>
using namespace std;
bool is_correct_matrix(int** matrix, int n) {
for (int i = 0; i < n; i++) {
for (int j = 0; j < n; j++) {
if (i + 2 < n && j + 2 < n) {
if ((matrix[i][j] == 0 && matrix[i + 1][j] == 0 && matrix[i + 2][j] == 0) ||
(matrix[i][j] == 1 && matrix[i + 1][j] == 1 && matrix[i + 2][j] == 1)) {
return false;
}
if ((matrix[i][j] == 0 && matrix[i][j + 1] == 0 && matrix[i][j + 2] == 0) ||
(matrix[i][j] == 1 && matrix[i][j + 1] == 1 && matrix[i][j + 2] == 1)) {
return false;
}
if ((matrix[i][j] == 0 && matrix[i + 1][j + 1] == 0 && matrix[i + 2][j + 2] == 0) ||
(matrix[i][j] == 1 && matrix[i + 1][j + 1] == 1 && matrix[i + 2][j + 2] == 1)) {
return false;
}
if ((matrix[i + 2][j] == 0 && matrix[i + 1][j + 1] == 0 && matrix[i][j + 2] == 0) ||
(matrix[i + 2][j] == 1 && matrix[i + 1][j + 1] == 1 && matrix[i][j + 2] == 1)) {
return false;
}
}
}
}
return true;
}
int main() {
int n;
cin >> n;
int** matrix = new int*[n];
for (int i = 0; i < n; i++) {
matrix[i] = new int[n];
for (int j = 0; j < n; j++) {
cin >> matrix[i][j];
}
}
bool is_correct = is_correct_matrix(matrix, n);
if (is_correct) {
cout << "Матриця правильна" << endl;
} else {
cout << "Матриця неправильна" << endl;
}
for (int i = 0; i < n; i++) {
delete[] matrix[i];
}
delete[] matrix;
return 0;
}