Поиск:

Ответ в темуСоздание новой темы Создание опроса
> !Задача! Кто сможет решить задачу? Помогите! 
:(
    Опции темы
Olmer
  Дата 19.12.2003, 19:08 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Люди, помогите, пожалуйста решить задачу(на VB или Qbasic`e)!!!!!!!! Вот её условие:

В прямоугольной таблице n строк и m столбцов (n и m) не превосходят 10. Подсчитать число возможных маршрутов перехода из левой верхней клетки в правую нижнюю, если разрешены перемещения только вниз и вправо и несколько клеток(но не начальная и не конечная) запрещены для посещения.

Пример:
Число строк 3
число столбцов 4
Число клеток, запрещенных для посещения 2
Их координаты:
1,4
3,2
Число маршрутов 6

Если кто сможет решить, то, Please, намыльте мне код!([email protected])
  Вверх
Black_Star
Дата 20.12.2003, 02:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 192
Регистрация: 9.9.2003
Где: Minsk

Репутация: нет
Всего: 4



трудновато...
Если бы надо было посчитать кратчайший маршрут, помог бы...
PM ICQ   Вверх
kostik_16
Дата 20.12.2003, 04:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 196
Регистрация: 23.7.2003

Репутация: нет
Всего: 1



Попробуй полным перебором! Каждый раз смещаясь на одну клетку в сторону от предвидужего маршрута, обходя недоступные клетки!

Задача на графы!
PM MAIL   Вверх
maxim1000
Дата 20.12.2003, 11:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник
Сообщений: 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
PM WWW   Вверх
cardinal
Дата 20.12.2003, 18:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Инженер
****


Профиль
Группа: Экс. модератор
Сообщений: 6003
Регистрация: 26.3.2002
Где: Германия

Репутация: 5
Всего: 99



maxim1000, молоток! smile.gif
Задача не на графы, а на рекурсию, которую так любят преподы. Лично я хотел идти от начальной точки bored.gif, но а в остальной идея та же. Сам понимаешь было бы не идеальное решение. У тебя можно кое что подправить, а так классно!

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)

Должно работать.


--------------------
Немецкая оппозиция потребовала упростить натурализацию иммигрантов
В моем блоге: Разные истории из жизни в Германии

"Познание бесконечности требует бесконечного времени, а потому работай не работай - все едино".  А. и Б. Стругацкие
PM   Вверх
maxim1000
Дата 21.12.2003, 12:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник
Сообщений: 3334
Регистрация: 11.1.2003
Где: Киев

Репутация: 33
Всего: 110



ну, это алгоритм записан рекурсивно, а для его реализации рекурсию можно обойти
делаем двумерный массив, соответствующий таблице
в каждую клетку записываем количество путей, по которым в нее можно прийти
при этом используем информацию об уже обработанных клетках
сначала можно будет проанализировать только одну клетку - начальную (будет 1)
потом - ту, которая снизу (тоже будет 1)
так заполнится первый столбец
второй столбец:
первая клетка - 1
каждая следующая клетка - верхняя + левая
так по одному столбцу можно будет заполнить всю таблицу
при заполнении последней клетки мы получим ответ


--------------------
qqq
PM WWW   Вверх
cardinal
Дата 21.12.2003, 16:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Инженер
****


Профиль
Группа: Экс. модератор
Сообщений: 6003
Регистрация: 26.3.2002
Где: Германия

Репутация: 5
Всего: 99



Цитата
В прямоугольной таблице n строк и m столбцов (n и m) не превосходят 10.

Поэтому заморачиваться не стоит и можно оставить рекурсию. Тем более, что не известен размер и
Цитата
делаем двумерный массив, соответствующий таблице
делает процедуру неуникальной.


--------------------
Немецкая оппозиция потребовала упростить натурализацию иммигрантов
В моем блоге: Разные истории из жизни в Германии

"Познание бесконечности требует бесконечного времени, а потому работай не работай - все едино".  А. и Б. Стругацкие
PM   Вверх
maxim1000
Дата 22.12.2003, 14:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник
Сообщений: 3334
Регистрация: 11.1.2003
Где: Киев

Репутация: 33
Всего: 110



Цитата
заморачиваться не стоит и можно оставить рекурсию

просто идея пришла из другой области (распознавание речи с использованием динамического программирования), там была похожая ситуация, а время было критично
но в данном конкретном случае полностью согласен


--------------------
qqq
PM WWW   Вверх
cardinal
Дата 22.12.2003, 20:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Инженер
****


Профиль
Группа: Экс. модератор
Сообщений: 6003
Регистрация: 26.3.2002
Где: Германия

Репутация: 5
Всего: 99



Я когда время критично пишу исключительно на ассемблере smile.gif (ну и без рекурсии соответственно, тем более, что ее можно часто (но не всегда) очень красиво переделать в псевдо-рекурсию).


--------------------
Немецкая оппозиция потребовала упростить натурализацию иммигрантов
В моем блоге: Разные истории из жизни в Германии

"Познание бесконечности требует бесконечного времени, а потому работай не работай - все едино".  А. и Б. Стругацкие
PM   Вверх
val
Дата 23.12.2003, 10:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Program developer
**


Профиль
Группа: Участник Клуба
Сообщений: 992
Регистрация: 14.1.2003
Где: г. Киев

Репутация: 1
Всего: 7



Цитата
просто идея пришла из другой области (распознавание речи с использованием динамического программирования), там была похожая ситуация, а время было критично
но в данном конкретном случае полностью согласен


Да уж, динамическое программирование весьма гибкая штука, где уж его только не применяли...


--------------------
Терпимость - величайшее благо человечества...
Ярчайший признак интеллекта – постоянно хорошее настроение…
PM MAIL ICQ   Вверх
Fedor
Дата 25.12.2003, 00:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Днепрянин
****


Профиль
Группа: Участник
Сообщений: 2090
Регистрация: 8.2.2003
Где: Великий

Репутация: 2
Всего: 32



Да.... Эта задача - одна из классических задач динамического программирования.


--------------------
Мы - Днепряне. Мы всех сильней.
PM ICQ   Вверх
Bass_
Дата 30.1.2004, 15:51 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











а как создать генератор карт МТУ ??
  Вверх
neutrino
Дата 18.2.2004, 12:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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 
PM MAIL WWW ICQ Skype GTalk   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Алгоритмы"

maxim1000

Форум "Алгоритмы" предназначен для обсуждения вопросов, связанных только с алгоритмами и структурами данных, без привязки к конкретному языку программирования и/или программному продукту.


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, maxim1000.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Алгоритмы | Следующая тема »


 




[ Время генерации скрипта: 0.0517 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.