• Предмет: Информатика
  • Автор: nmarcuk690
  • Вопрос задан 3 месяца назад

на с++ Квадратну матрицю розміром NxN називають правильною, якщо в ній немає квадратів 2х2, що складаються лише з 0 або лише з 1. Перевірити, чи є створена матриця правильною.​

Ответы

Ответ дал: andreyfedyanovich
0

#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;

}

Вас заинтересует