Статья Автор: Лебедев Дмитрий

TUZ_2-02 Подсчет количества путей к точке (0,0) на координатной сетке

TUZ_2-02 Подсчет количества путей к точке (0,0) на координатной сетке
Задача 50204

TUZ_2-02 Подсчет количества путей к точке (0,0) на координатной сетке
2.2. Подсчет количества путей к точке (0,0) на координатной сетке
В координатной сетке дана точка (x, y), представленная парой натуральных чисел, и нужно из нее добраться до точки (0,0). Задача состоит в том, чтобы подсчитать, сколькими возможными путями можно достичь начала координат (0,0), выполняя шаги влево или вниз.
Напишите функцию, подсчитывающую наибольшее количество таких путей, не пересекающих точки с координатами в запретном списке.
На входе даются x и y – координаты исходной точки, а tabu – список точек с запретными координатами.
В табл. 2.2 показаны ожидаемые результаты для некоторых входных данных.
Таблица 2.2. Некоторые ожидаемые результаты для разных значений x, y и tabu
x, y, tabu Ожидаемый результат
3, 2
[]
10
1, 6
[(7, 1), (4, 4)]
7
8, 8
[(9, 10), (1, 4)]
11220
7, 5
[6,8]
792

Алгоритм
Для поиска решения используется следующий алгоритм.
1. Принимаются координаты (row, col) исходной точки и список tabu.
2. Создается двумерный массив paths с размером (row + 1) × (col + 1).
3. Элементу paths [0] [0] присваивается значение 1.
4. Для всех i от 1 до row, если точка (i,0) не включена в tabu, присвоить
элементу paths [i] [0] значение элемента paths [i – 1] [0].
5. Для всех j от 1 до col, если точка (0, j) не включена в tabu, присвоить
элементу paths [0] [j] значение paths [0] [j – 1].
6. Для всех i от 1 до row и для всех j от 1 до col, если точка (i, j) не включена в tabu, присвоить элементу paths [i] [j] значение выражения
paths [i – 1] [j] + paths [i] [j – 1].
7. Вернуть paths [row] [col].


Пропустить Навигационные Ссылки.
Чтобы оставить комментарий нужна авторизация
Печать