![]() |
|
|
![]()
|
|
| Olmer |
|
|||
|
Unregistered |
Люди, помогите, пожалуйста решить задачу(на VB или Qbasic`e)!!!!!!!! Вот её условие:
В прямоугольной таблице n строк и m столбцов (n и m) не превосходят 10. Подсчитать число возможных маршрутов перехода из левой верхней клетки в правую нижнюю, если разрешены перемещения только вниз и вправо и несколько клеток(но не начальная и не конечная) запрещены для посещения. Пример: Число строк 3 число столбцов 4 Число клеток, запрещенных для посещения 2 Их координаты: 1,4 3,2 Число маршрутов 6 Если кто сможет решить, то, Please, намыльте мне код!([email protected]) |
|||
|
||||
| Black_Star |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 192 Регистрация: 9.9.2003 Где: Minsk Репутация: нет Всего: 4 |
трудновато...
Если бы надо было посчитать кратчайший маршрут, помог бы... |
|||
|
||||
| kostik_16 |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 196 Регистрация: 23.7.2003 Репутация: нет Всего: 1 |
Попробуй полным перебором! Каждый раз смещаясь на одну клетку в сторону от предвидужего маршрута, обходя недоступные клетки!
Задача на графы! |
|||
|
||||
| maxim1000 |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 3334 Регистрация: 11.1.2003 Где: Киев Репутация: 33 Всего: 110 |
чтобы посчитать количество путей к заданной клетке, можно использовать следующий алгоритм:
пусть f(x,y) - функция, которая вычисляет количество всевозможных путей к клетке (x,y) тогда: 1. f(0,0)=1 2. если клетка запрещена => f(x,y)=0 3. иначе => f(x,y)=f(x-1,y)+f(x,y-1) -------------------- qqq |
|||
|
||||
| cardinal |
|
|||
![]() Инженер ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 6003 Регистрация: 26.3.2002 Где: Германия Репутация: 5 Всего: 99 |
maxim1000, молоток!
Задача не на графы, а на рекурсию, которую так любят преподы. Лично я хотел идти от начальной точки 1. f(1,1) = 1 2. если (клетка запрещена или x = 0 или y = 0) => f(x,y)=0 3. иначе => f(x,y)=f(x-1,y)+f(x,y-1) Должно работать. -------------------- Немецкая оппозиция потребовала упростить натурализацию иммигрантов В моем блоге: Разные истории из жизни в Германии "Познание бесконечности требует бесконечного времени, а потому работай не работай - все едино". А. и Б. Стругацкие |
|||
|
||||
| maxim1000 |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 3334 Регистрация: 11.1.2003 Где: Киев Репутация: 33 Всего: 110 |
ну, это алгоритм записан рекурсивно, а для его реализации рекурсию можно обойти
делаем двумерный массив, соответствующий таблице в каждую клетку записываем количество путей, по которым в нее можно прийти при этом используем информацию об уже обработанных клетках сначала можно будет проанализировать только одну клетку - начальную (будет 1) потом - ту, которая снизу (тоже будет 1) так заполнится первый столбец второй столбец: первая клетка - 1 каждая следующая клетка - верхняя + левая так по одному столбцу можно будет заполнить всю таблицу при заполнении последней клетки мы получим ответ -------------------- qqq |
|||
|
||||
| cardinal |
|
||||
![]() Инженер ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 6003 Регистрация: 26.3.2002 Где: Германия Репутация: 5 Всего: 99 |
Поэтому заморачиваться не стоит и можно оставить рекурсию. Тем более, что не известен размер и
-------------------- Немецкая оппозиция потребовала упростить натурализацию иммигрантов В моем блоге: Разные истории из жизни в Германии "Познание бесконечности требует бесконечного времени, а потому работай не работай - все едино". А. и Б. Стругацкие |
||||
|
|||||
| maxim1000 |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 3334 Регистрация: 11.1.2003 Где: Киев Репутация: 33 Всего: 110 |
просто идея пришла из другой области (распознавание речи с использованием динамического программирования), там была похожая ситуация, а время было критично но в данном конкретном случае полностью согласен -------------------- qqq |
|||
|
||||
| cardinal |
|
|||
![]() Инженер ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 6003 Регистрация: 26.3.2002 Где: Германия Репутация: 5 Всего: 99 |
Я когда время критично пишу исключительно на ассемблере
-------------------- Немецкая оппозиция потребовала упростить натурализацию иммигрантов В моем блоге: Разные истории из жизни в Германии "Познание бесконечности требует бесконечного времени, а потому работай не работай - все едино". А. и Б. Стругацкие |
|||
|
||||
| val |
|
|||
![]() Program developer ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 992 Регистрация: 14.1.2003 Где: г. Киев Репутация: 1 Всего: 7 |
Да уж, динамическое программирование весьма гибкая штука, где уж его только не применяли... -------------------- Терпимость - величайшее благо человечества... Ярчайший признак интеллекта – постоянно хорошее настроение… |
|||
|
||||
| Fedor |
|
|||
![]() Днепрянин ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2090 Регистрация: 8.2.2003 Где: Великий Репутация: 2 Всего: 32 |
Да.... Эта задача - одна из классических задач динамического программирования.
-------------------- Мы - Днепряне. Мы всех сильней. |
|||
|
||||
| Bass_ |
|
|||
|
Unregistered |
а как создать генератор карт МТУ ??
|
|||
|
||||
| neutrino |
|
|||
![]() Gothic soul ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 3041 Регистрация: 25.3.2002 Где: Верхняя Галилея, Кармиэль Репутация: нет Всего: 62 |
Вот на ум что пришло:
Можно перемещаться только вверх и вправо? Хех, ну допустим есть поле m на n, то число маршрутов из (0,0) в (m-1, n-1) это ведь биномиальный коэффициент: (m+n - над - m) !!! Такое решение не требует рекурсии. Если есть какие-то места, которые нельзя посещять, то мы должны знать их "площадь" и тем же методом определить сколько разных ходов через них проходят, отнять их количество от общего и получатся все возможные ходы! Вот пример: 0 - ход возможен, 1 - препятствие: 00000000 00000000 00111000 00111000 00000000 сколько возможных ходов? Это поле 8 на 5, значит всего: (8+5 - над - 5) = 1287 площадь препятствия: 3 на 2, через него проходит (3+2 - над - 2) = 10 ходов. Значит всего: 1287-10=1277 !!! -------------------- The truth comes from within ... Покойся с миром, Vit |
|||
|
||||
![]()
|
| Правила форума "Алгоритмы" | |
|
|
Форум "Алгоритмы" предназначен для обсуждения вопросов, связанных только с алгоритмами и структурами данных, без привязки к конкретному языку программирования и/или программному продукту.
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, maxim1000. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Алгоритмы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |