A413a

Задача: Таблица футбольного чемпионата задана квадратной матрицей порядка n, в которой все элементы, принадлежащие главной диагонали, равны нулю, а каждый элемент, не принадлежащий главной диагонали, равен  2,  1  или  0 (числу очков, набранных в игре:  2— выигрыш,  1— ничья,   0— проигрыш).

a) Найти число команд, имеющих побед больше, чем поражений.

Тесты:

Матрица Число команд Комментарий
3

0 2 2

0 0 1

0 1 0

1 Работает
4

0 2 1 1

0 0 2 2

1 0 0 0

1 0 2 0

2 Работает
2

0 1

1 0

0 Работает

Объяснение переменных:

int n — число команд (размерность квадратной матрицы)

double k = 0 — вспомогательная переменная для метода, описанного ниже (особенности)

int m[n][n] — квадратная матрица, в которую вносится турнирная таблица.

int d = 0- переменная для счёта удоволетроворяющих условию команд

Код: проверить на ideone.

Алгоритм:

  1. Ввод n ( cin >> n ).
  2. Заполнение массива m ( cin >> m[i][j] ).
  3. Подсчет суммы очков команды ( k += m[i][j] ).
  4. Если k делённое на количество игр больше 1 (  k/(n-1) [latex]\in \Re [/latex]  ), d++.
  5. Обнуляем k. Возвращаемся к п.3, пока не будет выполнен цикл
  6. По завершению цикла выводим d.

 Особенности:

Метод использованный для выявления команд, удовлетворяющих условию задачи, заключается в замеченной мной впоследствии изучения задачи закономерности:

Если сумма очков команды делится на количество игр и даёт 1, то это значит, что либо победы = поражениям (не подходит по условию) либо это сплошные ничьи (снова победы = проигрышам). Причем, если ответ больше 1, то и побед больше, чем поражений. Если ответ меньше 1, то побед меньше, чем поражений.

Божик Семен
Божик Семен

Latest posts by Божик Семен (see all)

One thought on “A413a

  1. Не очень красивый способ делать целое по сути число k вещественным. Да и эта переменная должна быть локальной в цикле по i — тогда не нужна будет строчка 17.
    Я понимаю, что k вещественное, чтобы правильно поделилось k/(n-1) — но если Вы уж хотите делить можно сделать (double) k/(n-1) — а еще лучше заменить условие на k>n-1.

    Учитывая замечания, засчитываю работу на 9 баллов.

Добавить комментарий