IPB
ЛогинПароль:

> Прочтите прежде чем задавать вопрос!

1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!

> Минимальное множество прямых (рекурсия с возвратом)
Даша
сообщение 17.04.2011 17:13
Сообщение #1


Новичок
*

Группа: Пользователи
Сообщений: 20
Пол: Женский

Репутация: -  1  +


Всем доброго времени суток! Прошу помочь со следующей задачей: найти минимальное множество прямых, проходящих через все заданные точки. То есть заданы координаты точек и ответом должно быть число прямых. Не знаю как организовать перебор всех вариантов, очень прошу написать хотя бы в общем виде сам алгоритм.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов
Lapp
сообщение 17.04.2011 21:36
Сообщение #2


Уникум
*******

Группа: Модераторы
Сообщений: 6 823
Пол: Мужской
Реальное имя: Лопáрь (Андрей)

Репутация: -  159  +


Цитата(Даша @ 17.04.2011 18:13) *
Всем доброго времени суток! Прошу помочь со следующей задачей: найти минимальное множество прямых, проходящих через все заданные точки. То есть заданы координаты точек и ответом должно быть число прямых. Не знаю как организовать перебор всех вариантов, очень прошу написать хотя бы в общем виде сам алгоритм.
И это нужно сделать с помощью рекурсии? В целом, ничего сложного, но есть непонятные моменты..

Допустим, точки заданы массивом (то есть, упорядочены). Делаешь процедуру, которая делает две вещи (либо/либо, как обычно в рекурсии):
1. Если точек 2 или больше, то берет следующую точку и проводит все прямые через нее и все остальные и добавляет их к списку, если их там еще нет; после этого "выкидывает" эту тучку из массива и вызывает себя же.
2. Если точка только одна - выходит.

Таким образом будут проведены все прямые. Смысл твоей задачи состоит в том, чтоб отсеять повторы, поэтому нужно всякий раз проверять, не включена ли прямая уже в список. А для этого нужно уметь уметь сравнивать прямые. Например, если две прямые заданы в виде y=ax+b, то они одинаковые, если a1 и b2 соответственно равны a2 и b2. Тут возникает оджин вопрос: как заданы координаты точек? Это действительные числа или целые? Действительные сравнивать несколько труднее..

Говори, что непонятно.


--------------------
я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

Сообщений в этой теме
Даша   Минимальное множество прямых (рекурсия с возвратом)   17.04.2011 17:13
Lapp   Всем доброго времени суток! Прошу помочь со сл...   17.04.2011 21:36
Даша   Вот это как раз непонятно. Как организовать пере...   17.04.2011 22:10
Lapp   Вот это как раз непонятно. Как организовать перебо...   18.04.2011 6:08
Lapp   Даша, я так понимаю, что у тебя особого прогресса ...   19.04.2011 11:41
Даша   Прощу прощения за то что долго не отвечала, не был...   19.04.2011 21:20
Lapp   Прощу прощения за то что долго не отвечала, не был...   20.04.2011 6:03
Lapp   Вот. Выстругал буратинку )). Но снова она мне не ...   20.04.2011 8:40
Даша   Еще раз выражаю огромную благодарность :) По коду...   20.04.2011 16:28
-TarasBer-   А разве для быстрого переноса Паскальных программ ...   20.04.2011 19:19
Lapp   По коду в принципе всё понятно,Даша, не обижайся, ...   21.04.2011 1:47
-TarasBer-   > А зачем? Чтоб растянуть удовольствие? Для бы...   21.04.2011 13:35
Даша   Что же, попробую ответить на ваши вопросы: 1. Что...   21.04.2011 17:13
Lapp   Для быстрого переноса Паскальных программ, и чтобы...   22.04.2011 7:35


 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



- Текстовая версия 19.07.2025 21:22
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"