Диагонали многоугольника |
1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code], либо быть опубликованы на нашем PasteBin в режиме вечного хранения.
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!
Диагонали многоугольника |
RathaR |
Сообщение
#1
|
Знаток Группа: Пользователи Сообщений: 346 Пол: Мужской Реальное имя: Иван Репутация: 7 |
Задача следующая:
В выпуклом многоугольнике который имеет N вершин провели все диагонали, никакие три из них не пересекаются в одной точке. Найти количество частей на которые эти диагонали его розделили. Задача в числе простых но в голову ничего не лезет... Подскажите с помощью чего её можна решить? Ведь зависимость между кол-вом вершин и числом елементов на которые его разбивают диагонали не линейная... Следовательно может быть здесь нужно задействовать рекурсию? или считать пересечения диагоналей? направте на путь истинный -------------------- Считающий себя единственым здравомыслящим человеком сумасшедший? Если да, возможно я псих...
Пусть умолкнет всякий критик! Я - системный аналитик! |
Krjuger |
Сообщение
#2
|
Профи Группа: Пользователи Сообщений: 652 Пол: Мужской Реальное имя: Алексей Репутация: 20 |
Товарищ,у вас явно не совсем корректное задание.
Цитата провели все диагонали, никакие три из них не пересекаются в одной точке. Эти две вещи явно противоречат друг другу.как я понимаю вам надо найти максимальное количесво диагоналей,которые удовлетворяют вашему условию. Цитата Следовательно может быть здесь нужно задействовать рекурсию Абсолютно не следовательно.При чем тут рекурсия?Вы для начала итеративно сдетайте,а уж потом рекурсивно. Цитата или считать пересечения диагоналей Ну вам наоборон надо делать. Цитата кол-вом вершин и числом елементов на которые его разбивают диагонали не линейная Вообще то она линейная....число элементов равно N-1 для N вершин. для начала задумайся над тем,как ты будеш определять пересекаются ли 3 диагонали в одной точке...... Я могу предложить считать количество смежных фигут, для которых эта точка считается вершиной,например при пересечении двух диагоналей получится 4 фигуры,а при пересечении 3 прямых уже 6 фигур. |
volvo |
Сообщение
#3
|
Гость |
Цитата Эти две вещи явно противоречат друг другу Это чем же, интересно?Добавлено через 40 сек. Цитата для начала задумайся над тем,как ты будеш определять пересекаются ли 3 диагонали в одной точке...... Они ПО УСЛОВИЮ не пересекаются, о чем тут задумываться? |
RathaR |
Сообщение
#4
|
Знаток Группа: Пользователи Сообщений: 346 Пол: Мужской Реальное имя: Иван Репутация: 7 |
Вообще то она линейная....число элементов равно N-1 для N вершин. эм...а как ето возможно? диагонали только с одной вершини розбивают фигуру на N-2 треугольника, тоесть, елемента. С подсчетом смежных фигур, для которых вершина многоугольника тоже является вершиной ето конечно идея, но как тогда считать те куски которые остались внутри многоугольника. У меня по поводу етой задачи других мыслей нет... насторажевает то что она самая лёгкая, а пару задачек посложней я решил... Сообщение отредактировано: RathaR - -------------------- Считающий себя единственым здравомыслящим человеком сумасшедший? Если да, возможно я псих...
Пусть умолкнет всякий критик! Я - системный аналитик! |
Krjuger |
Сообщение
#5
|
Профи Группа: Пользователи Сообщений: 652 Пол: Мужской Реальное имя: Алексей Репутация: 20 |
Видно,Vlovo,мы условие по разному поняли.Ладно видимо в первый раз я не правильно понял.
Цитата С подсчетом смежных фигур, для которых вершина многоугольника тоже является вершиной ето конечно идея, но как тогда считать те куски которые остались внутри многоугольника. А что тебе мешает для других,вот смотри для каждой вершини многоугольника n-2(тут я описался),то что у тебя не пересекаются никакие 3 говорит о том, что у тебя могут пересекаться две диагонали, тогда они тоже образуют точку, причем то что только две диагонали дает тебе право говорить что у тебя будут только 4 фигуры,для которых эта новая точка будет вершиной,и по сути тебе останется только сосчитать их количество и вычесть их повторения. Сообщение отредактировано: Krjuger - |
Lapp |
Сообщение
#6
|
Уникум Группа: Пользователи Сообщений: 6 823 Пол: Мужской Реальное имя: Лопáрь (Андрей) Репутация: 159 |
Задача в числе простых но в голову ничего не лезет... RathaR, давай не будем записывать задачу в "число простых" по крайней мере до тех пор, пока тебе хоть что-нибудь "в голову не влезет". А то как-то мне, считающему ее не самой простой, даже как-то странно помогать тебе, для которого она "в числе простых".Но я все же попробую.. Но сначала уточни. Правильно я понимаю, что тебе дано конкретное число N, а конкретные значения вершин не даны? То есть их нужно выбрать произвольно, но при наложенном условии на пересечение диагоналей. При этом программа должна выдавать ответ как функцию числа N - так? Если так, то несколько неясно, кем доказана независимость этой функции от вида многоугольника (то есть от конкретных значений вершин)? И вообще, задача сильно смахивает на чистую математику. Хотя, вполне возможно, что формула не такая простая, и тогда программное решение (возможно, и с рекурсией) вполне уместно.. Но, если так (то есть, если программа не есть просто вычисление по известной формуле, а нужно моделировать процесс разбиения и подсчитывать число частей), то я никак не склонен называть такую программу "простой". P.S. А Большая теорема Ферма для тебя случайно не "в числе простых"? Добавлено через 4 мин. насторажевает то что она самая лёгкая, а пару задачек посложней я решил... Все же открой секрет, как ты разбиваешь задачи на "совсем легкие" и "послежнее"? Я балдею с твоих заявлений о простоте.. -------------------- я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой |
RathaR |
Сообщение
#7
|
Знаток Группа: Пользователи Сообщений: 346 Пол: Мужской Реальное имя: Иван Репутация: 7 |
RathaR, давай не будем записывать задачу в "число простых" по крайней мере до тех пор, пока тебе хоть что-нибудь "в голову не влезет". А то как-то мне, считающему ее не самой простой, даже как-то странно помогать тебе, для которого она "в числе простых". Назвая её простой я не имел в виду то что она лично для меня меня простая, это задача с олимпиады этого года и из 4 заданий из которых я решил 2 и 3 (за которые дают больше балов) она первая, и за неё дают балов меньше остальных, но вот с ней я так и не разобрался... По поводу условия: про сам многоугольник неизвестно ничего, сказно только что он выпуклый и никакие три ез его диагоналей не пересекаються в одной точке, дано лиш число N - кол-во вершин... Про рекурсивную функцию я говорил потому что так и несмог найти зависимости между кол-вом вершин и кол-вом частей на которые диагонали розбивают фигуру. -------------------- Считающий себя единственым здравомыслящим человеком сумасшедший? Если да, возможно я псих...
Пусть умолкнет всякий критик! Я - системный аналитик! |
Lapp |
Сообщение
#8
|
Уникум Группа: Пользователи Сообщений: 6 823 Пол: Мужской Реальное имя: Лопáрь (Андрей) Репутация: 159 |
Назвая её простой я не имел в виду то что она лично для меня меня простая, На мой взгляд, единственный способ доказать, что "лично для тебя она простая" - решить. Пока не решишь - по крайней мере "лично для тебя" она останется сложной. Хотя, количество баллов - это аргумент, согласен. Но только не "лично для тебя".Так, кое-что начинает проясняться. Еще один вопрос: нужно подсчитать количество цельных частей, или, например, два смежных треугольника тоже составляют фигуру, которую нужно учитывать? Например, какой Добавлено через 1 мин. извиняюсь, что-то снова нажал случайно, и мессадж уехал недописанным. ... ответ будет для четырехугольника - 4? Добавлено через 5 мин. Если можно, приведи условие дословно, плз. -------------------- я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой |
RathaR |
Сообщение
#9
|
Знаток Группа: Пользователи Сообщений: 346 Пол: Мужской Реальное имя: Иван Репутация: 7 |
... ответ будет для четырехугольника - 4? Да, для четырехугольника 4. Если можно, приведи условие дословно, плз. Условие на украинском языке... -------------------- Считающий себя единственым здравомыслящим человеком сумасшедший? Если да, возможно я псих...
Пусть умолкнет всякий критик! Я - системный аналитик! |
Lapp |
Сообщение
#10
|
Уникум Группа: Пользователи Сообщений: 6 823 Пол: Мужской Реальное имя: Лопáрь (Андрей) Репутация: 159 |
Условие на украинском языке... Ничего, я попробую разобраться. Приведи, если не в лом.-------------------- я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой |
RathaR |
Сообщение
#11
|
Знаток Группа: Пользователи Сообщений: 346 Пол: Мужской Реальное имя: Иван Репутация: 7 |
Задача 1. Діагоналі.
Умова. У випуклому багатокутнику, що має N вершин провели всі діагоналі. Причому ніякі три з них не перетинаються в одній точці. В результаті багатокутник був розділений діагоналями на M частин. Завдання: написати програму DIAGONAL яка знайде число M, тобто, на скільки частин був розділений многокутник діагоналями. Вхідний текстовий файл містить у єдиному рядку ціле число N - кіллькість вершин (1<N<1000). Вихідний текстовий файл містить єдине ціле число - кількість частин на які діагоналі розбивають багатокутник. -------------------- Считающий себя единственым здравомыслящим человеком сумасшедший? Если да, возможно я псих...
Пусть умолкнет всякий критик! Я - системный аналитик! |
Гость |
Сообщение
#12
|
Гость |
Вот:
var Спасибо за задачку, полезно иногда прочистить мозги . Но легкой я бы ее все же не назвал. Пришлось сесть и потратить порядка часа чистого времени. Хотя решение явно недлинное. Наверное, почаще надо такими вещами заниматься)). Кстати, возможно, что можно и короче. Возможно, что можно и вообще без циклов (изначально у меня их было аж четыре)). |
Lapp |
Сообщение
#13
|
Уникум Группа: Пользователи Сообщений: 6 823 Пол: Мужской Реальное имя: Лопáрь (Андрей) Репутация: 159 |
Под маской гостя скрывался (ненарочно) я. Извиняюсь))
Добавлено через 3 мин. И еще: украинский текст меня очень порадовал)). Особенно "багатокутник" -------------------- я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой |
RathaR |
Сообщение
#14
|
Знаток Группа: Пользователи Сообщений: 346 Пол: Мужской Реальное имя: Иван Репутация: 7 |
Вот: готовый код это канешно очень хорошо, и за это вам большое спасибо но только целью моей было скорее понять её, чем получить готовую,а этого решения я если чесно часик просидел, и непонял. Хотелось бы алгоритм услышать, т.к. так и не понял, зачем во вложеном цыкле параметр и конечный параметр приближены друг к другу, и почему именно p:=p+(n-j)*(j-i-1)+1; Хотя решение с одним вложеным цыклом конечно немного удивило Сообщение отредактировано: RathaR - -------------------- Считающий себя единственым здравомыслящим человеком сумасшедший? Если да, возможно я псих...
Пусть умолкнет всякий критик! Я - системный аналитик! |
Lapp |
Сообщение
#15
|
Уникум Группа: Пользователи Сообщений: 6 823 Пол: Мужской Реальное имя: Лопáрь (Андрей) Репутация: 159 |
но только целью моей было скорее понять её, чем получить готовую, ... Хотя решение с одним вложеным цыклом конечно немного удивило Нет проблем, я еще пока, кажется, помню, как решал)). Сейчас напишу. Только вот рисунок сделаю.. А что именно удивило: что цикл - или что мало циклов? -------------------- я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой |
RathaR |
Сообщение
#16
|
Знаток Группа: Пользователи Сообщений: 346 Пол: Мужской Реальное имя: Иван Репутация: 7 |
А что именно удивило: что цикл - или что мало циклов? удивила простота реализации... никаких функций, процедур, деревьев, рекурсии и т.д. , тоесть это посилу написать человеку который неособо то знаком с паскалем, лиш бы только алгоритм понимал, и с логикой проблем не имел ... Сообщение отредактировано: RathaR - -------------------- Считающий себя единственым здравомыслящим человеком сумасшедший? Если да, возможно я псих...
Пусть умолкнет всякий критик! Я - системный аналитик! |
Lapp |
Сообщение
#17
|
Уникум Группа: Пользователи Сообщений: 6 823 Пол: Мужской Реальное имя: Лопáрь (Андрей) Репутация: 159 |
Пока писал и рисовал объяснение, у меня появилось сомнение в том, что задача решена верно .
Программа дает верные результаты для N = 1, 2, 3, 4, 5, 6, 7. А дальше я не проверял. Если кому не в лом, проверьте плз. Одно из двух: либо я действительно забыл свои рассуждения, либо увы.. Но сейчас башка уже не варит - поздно. Я додумаю завтра, если вы не возражаете.. -------------------- я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой |
RathaR |
Сообщение
#18
|
Знаток Группа: Пользователи Сообщений: 346 Пол: Мужской Реальное имя: Иван Репутация: 7 |
Пока писал и рисовал объяснение, у меня появилось сомнение в том, что задача решена верно . Программа дает верные результаты для N = 1, 2, 3, 4, 5, 6, 7. А дальше я не проверял. Если кому не в лом, проверьте плз. Одно из двух: либо я действительно забыл свои рассуждения, либо увы.. Но сейчас башка уже не варит - поздно. Я додумаю завтра, если вы не возражаете.. я никак абсолютно не возражаю, и не хочу напрягать мыслительный процесс, а по поводу результатов: Хєх, вот только что прикинул, если поменять переменную p на LongInt то получим результат гдето до N= 450 а дельше число фрагментов больше 2 000 000 000, а в условии сказано N до 1000, такчто в идеале прийдётся еще работать со строками чтоб получить полный результат %) -------------------- Считающий себя единственым здравомыслящим человеком сумасшедший? Если да, возможно я псих...
Пусть умолкнет всякий критик! Я - системный аналитик! |
volvo |
Сообщение
#19
|
Гость |
Цитата можно и вообще без циклов WriteLn(trunc((n-1)*(n-2)*(sqr(n)-3*n+12) / 24)); Цитата такчто в идеале прийдётся еще работать со строками чтоб получить полный результат %) Про тип Comp (который может хранить значения от -263 + 1 до 263 - 1) не забывай. Тебе емкости этого типа - за глаза хватит, не надо придумывать самому себе проблемы на ровном месте. |
RathaR |
Сообщение
#20
|
Знаток Группа: Пользователи Сообщений: 346 Пол: Мужской Реальное имя: Иван Репутация: 7 |
Про тип Comp (который может хранить значения от -263 + 1 до 263 - 1) не забывай. Тебе емкости этого типа - за глаза хватит, не надо придумывать самому себе проблемы на ровном месте. проверил... хватило только всерамно решения невкурил... -------------------- Считающий себя единственым здравомыслящим человеком сумасшедший? Если да, возможно я псих...
Пусть умолкнет всякий критик! Я - системный аналитик! |
Текстовая версия | 23.12.2024 19:40 |