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, то побед меньше, чем поражений.

Related Images: