Проверка, является ли матрица латинским квадратом - C (СИ) (72999)

Узнай цену своей работы

Формулировка задачи:

Какие проверки нужно сделать чтобы выяснить является ли массив размером nxn латинским квадратом?помогите пожалуйста

Решение задачи: «Проверка, является ли матрица латинским квадратом»

textual
Листинг программы
#include <stdio.h>
#include <conio.h>
 
#define N 5
 
int main(int argc, char* argv[])
{
    int M[N][N] = { { 3, 2, 1, 7, 4 },
                    { 6, 4, 3, 8, 5 },
                    { 1, 3, 8, 5, 6 },
                    { 9, 1, 5, 4, 3 },
                    { 7, 6, 4, 9, 2 } };
 
    for (int i = 0; i < N; i++)
    {
        for (int j = 0; j < N; j++)
            printf("%d ", M[i][j]);
 
        printf("\n");
    }
 
    printf("\n");
 
    bool result = false;
    for (int i = 0; i < N && !result; i++)
        for (int j = 0; j < N && !result; j++)
        {
            int count = 0;
            for (int n = 0; n < N; n++)
                if (M[n][j] == M[i][j] && n != i)
                    count++;
 
            if (count > 0)
            {
                result = true;
                continue;
            }
 
            count = 0;
            for (int k = 0; k < N; k++)
                if (M[i][k] == M[i][j] && k != j)
                    count++;
 
            if (count > 0) result = true;
        }
 
    printf("Matrix is latin quadrant: %s", (result == false) ? "YES" : "NO");
 
    _getch();
 
    return 0;
}

Объяснение кода листинга программы

  1. Объявлена матрица M размером NxN (латинский квадрат)
  2. Выводится содержимое матрицы M
  3. Инициализируется переменная result со значением false
  4. Внутренний цикл проверяет, является ли элемент матрицы M[i][j] присутствующим в строке i, при этом он не должен быть равен i
  5. Если элемент найден, счетчик count увеличивается на единицу
  6. Если count больше нуля, то переменная result устанавливается в true и выполняется переход к следующей итерации внешнего цикла
  7. Внутренний цикл проверяет, является ли элемент матрицы M[i][j] присутствующим в столбце j, при этом он не должен быть равен j
  8. Если элемент найден, счетчик count увеличивается на единицу
  9. Если count больше нуля, то переменная result устанавливается в true и выполняется переход к следующей итерации внешнего цикла
  10. Выводится сообщение о том, является ли матрица латинским квадратом (да/нет)

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

15   голосов , оценка 4.067 из 5
Похожие ответы