18.06 Шахматные фигуры
Ошибка.
Попробуйте повторить позже
Ладья ходит по шахматной доске размера . Найдите модуль разности между количеством путей
из точки
в точку
и количеством путей из точки
в точку
(первое
число — номер строки, второе — номер столбца), если ладья может ходить только вверх и
вправо.
Решение руками
Сначала посчитаем, количество путей в ячейки
Пусть — количество путей, ведущих в клетку
(т.к. мы стартуем из этой клетки),
Аналогично с Далее заметим, что количество способов попасть в любую клетку,
это сумма всех клеток, которые находятся ниже и левее данной.
Динамически посчитаем все остальные способом, описанным выше, и ответом будет
.
Пример программы на для решения данной задачи. В программе все индексы на
меньше,
т.к. нумерация начинается с
.
Решение программой
dp = [] for i in range(10): a = [] for j in range(10): a.append(0) dp.append(a) # dp[i][j] - количество способов прийти в клетку с номерами i и j # [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] # [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] # [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] # [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] # [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] # [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] # [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] # [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] # [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] # [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] # [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] # т.к. в питоне индексация с нуля, то dp[0][0] будет обозначать клетку # с номером строки 1 и с номером столбца 1 dp[9][0] = 1 # сколько существует способов попасть из клетки (1, 1) в неё же? # Ответ: ровно 1 способ - ничего не делать for i in range(9, -1, -1): for j in range(10): for k in range(1, 10): if i == 9: if j - k >= 0: dp[i][j] += dp[i][j - k] elif j == 0: if i + k < 10: dp[i][j] += dp[i + k][j] else: if i + k < 10: dp[i][j] += dp[i + k][j] if j - k >= 0: dp[i][j] += dp[i][j - k] # ответ print(abs(dp[7][6] - dp[6][4])) # выведем табличку для наглядности print(" " * 7, end="") for k in range(1, 11): print(f"{k:>10}", end="") print() print("-" * 112) for i in range(10): for j in range(10): if j == 0: print(f"{10 - i:>10}|", end="") print(f"{dp[i][j]:>10}", end="") print()
Специальные программы

Программа
лояльности v2.0
Приглашай друзей в Школково и получай вознаграждение до 10%!

Крути рулетку
и выигрывай призы!
Крути рулетку и покупай курсы со скидкой, которая привязывается к вашему аккаунту.

Бесплатное онлайн-обучение
Для школьников из приграничных территорий России, проживающих в ДНР, ЛНР, Херсонской, Запорожской, Белгородской, Курской, Брянской областях и Крыму.

Налоговые вычеты
Узнай, как получить налоговый вычет при оплате обучения в «Школково».

Специальное предложение
для учителей
Бесплатный доступ к любому курсу подготовки к ЕГЭ, ОГЭ и олимпиадам от «Школково». Мы с вами делаем общее и важное дело, а потому для нас очень значимо быть чем-то полезными для учителей по всей России!

Вернём деньги за курс
за твою сотку на ЕГЭ
Сдать экзамен на сотку и получить обратно деньги за подготовку теперь вполне реально!