Минимальное множество прямых (рекурсия с возвратом) |
1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code], либо быть опубликованы на нашем PasteBin в режиме вечного хранения.
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!
Минимальное множество прямых (рекурсия с возвратом) |
Даша |
Сообщение
#1
|
Новичок Группа: Пользователи Сообщений: 20 Пол: Женский Репутация: 1 |
Всем доброго времени суток! Прошу помочь со следующей задачей: найти минимальное множество прямых, проходящих через все заданные точки. То есть заданы координаты точек и ответом должно быть число прямых. Не знаю как организовать перебор всех вариантов, очень прошу написать хотя бы в общем виде сам алгоритм.
|
Даша |
Сообщение
#2
|
Новичок Группа: Пользователи Сообщений: 20 Пол: Женский Репутация: 1 |
Прощу прощения за то что долго не отвечала, не было возможности. Но вы правы, прогресса нет, ибо хотела задать вопрос: понятно что рекурсия будет перебирать все возможные варианты, но непонятно как она будет брать, допустим, четыре точки. Ведь у нас могут лежать четыре точки на одной прямой. И, например, программа возьмет первые две, а затем две другие. Получается надо будет каждый раз где нибудь в массиве запоминать K и B, а затем при высчитывании очередных коэффициентов сравнивать их с уже посчитанными?
За код больщущее спасибо . Только вы наверное не до конца разобрались в условии. Необходимо найти МИНИМАЛЬНОЕ множество прямых, на которых будут лежать все точки. То есть, например, для ваших точек ответ должен быть не 8, а 2. Но, насколько я понимаю, необходимо просто в ваш код добавить дополнительную переменную min, и где нибудь в программе переменную Lines каждый раз сравнивать с min? |
Lapp |
Сообщение
#3
|
Уникум Группа: Пользователи Сообщений: 6 823 Пол: Мужской Реальное имя: Лопáрь (Андрей) Репутация: 159 |
Прощу прощения за то что долго не отвечала, не было возможности. Но вы правы, прогресса нет, ибо хотела задать вопрос: понятно что рекурсия будет перебирать все возможные варианты, но непонятно как она будет брать, допустим, четыре точки. Ведь у нас могут лежать четыре точки на одной прямой. И, например, программа возьмет первые две, а затем две другие. Получается надо будет каждый раз где нибудь в массиве запоминать K и B, а затем при высчитывании очередных коэффициентов сравнивать их с уже посчитанными? Рекурсия - это в некотором смысле способ хранения большого множества параметров в стеке. Хотя, можно это сочетать и с глобальными массивами.Цитата За код больщущее спасибо . Только вы наверное не до конца разобрались в условии. Необходимо найти МИНИМАЛЬНОЕ множество прямых, на которых будут лежать все точки. То есть, например, для ваших точек ответ должен быть не 8, а 2. Но, насколько я понимаю, необходимо просто в ваш код добавить дополнительную переменную min, и где нибудь в программе переменную Lines каждый раз сравнивать с min? Да, ты права, я неверно понял условие.. Я думал, что надо провести прямую через каждую пару точек, но при этом не учитывать повторения. Оказывается, все иначе..Нет, простой доделкой кода тут не обойтись. Нужно менять всю схему.. Надеюсь, можно будет по крайней мере использовать функции Eq и Aligned. Я немного еще освобожусь и попробую сделать (если никто раньше не сделает)).. А задачка оказалась интереснее, чем я думал! )) -------------------- я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой |
Текстовая версия | 3.05.2024 0:40 |