Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 17.02.2012, 10:20   #21
DiemonStar
Старожил
 
Регистрация: 08.02.2012
Сообщений: 2,173
По умолчанию

Если n - число разрезов(линий), а k - число кусков, тогда:

k >= n+1 - минимальное
k <= (n+1)*n/2 и максимальное количество кусков получаемых заданным количеством разрезов.

одно из основных условий для получения заданного количества кусков - количество пересечений между разрезами (l) внутри данной фигуры.

и это количество должно быть равно:

l = k - (n + 1) - т.е. каждое пересечение добавляет ещё один кусок...

наиболее оптимальным будет способ, когда строится n-сторонний многоугольник из линий с максимальным количеством пересечений и точки пересечения выводятся за пределы фигуры(пиццы), пока количество кусков не станет соответствовать требуемому...
Правильно поставленная задача - три четверти решения.
DiemonStar вне форума Ответить с цитированием
Старый 17.02.2012, 10:44   #22
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

DiemonStar, откуда такая формула для максимума?
ну и, согласно вашей формуле
(n+1)*n/2
при n=6 можно получить 7*3 = 21 кусок

Вы не могли бы набросать графическую схемку, где видно, при каких разрезах возникает максимальное число кусков ?
Serge_Bliznykov вне форума Ответить с цитированием
Старый 17.02.2012, 11:04   #23
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

(n+1)*n/2 та же формула, что в #16, только единица потеряна
например для 2: (2+1)*2/2=3, а нужно 4.

DiemonStar +1 за идею построения, сам думал, но не пришла в голову
Изображения
Тип файла: jpg Безымянный.JPG (9.7 Кб, 304 просмотров)
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию

Последний раз редактировалось Аватар; 17.02.2012 в 11:30.
Аватар вне форума Ответить с цитированием
Старый 17.02.2012, 11:53   #24
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Аватар,
ребят, не дайте мне совсем с ума сойти на этой задаче, растолкуйте недогадливому:
первое.
Цитата:
2 разреза - от 3 до 4
3 разреза - от 4 до 7
4 разреза - от 5 до 10
5 разрезов - от 6 до 17
это правильные расчёты?
покажите, пожалуйста, как тремя разрезами получить 7 кусков (ну, или как 5 разрезами получить 17 кусков)

второе.
Цитата:
та же формула, что в #16, только единица потеряна
С(2,n) + C(1,n) + C(0,n)
при n=5 получаем 10 + 5 + 1 (на самом деле в сочетаниях ноль - бессмысленен и не может быть, но ладно, в формулу его можно подставить) = 16
так сколько кусков можно получить 5-ю разрезами? 16 или 17 ?

а при n=4 по формуле получаем 6 + 4 + 1 = 11 кусков.
так сколько кусков можно получить 4-ю разрезами?


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

Заранее благодарю.
Serge_Bliznykov вне форума Ответить с цитированием
Старый 17.02.2012, 12:42   #25
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,543
По умолчанию

максимальное число кусков для 3 и 4 разрезов
каждая линия пересекается с каждой
Закрашенная область центральный многоугольник (с не параллельными сторонами) о котором шла речь у DiemonStar
2.jpg
P.S. параллельность сторон можно использовать как один из способов вывода точки пересечения за пределы круга.
программа — запись алгоритма на языке понятном транслятору

Последний раз редактировалось evg_m; 17.02.2012 в 12:47.
evg_m вне форума Ответить с цитированием
Старый 17.02.2012, 12:47   #26
DiemonStar
Старожил
 
Регистрация: 08.02.2012
Сообщений: 2,173
По умолчанию

Цитата:
очень прошу тех, кто разобрался, нарисовать схемки разрезов (для получения максимального числа кусков).
максимально количество кусков получается при максимальном количестве точек пересечения. т.е:
- 2 разреза могут пересечься максимум 1 раз (у двух прямых одна точка пересечения)
- три разреза могут пересечься максимум 3 раза (три прямые образуют треугольник)
- четыре разреза - шесть раз пересекутся ( данный треугольник пересекаем ещё одной линией и получаем +3 точки пересечения)
и т.д.
т.е. получается арифметическая прогрессия с шагом 1 - каждое новое значение пересечений увеличивается на число существующих разрезов (максимальное количество точек пересечения одной линии с n-1 линий = n-1)

частный случай - пятиконечная звезда и "пицца" радиусом большим длины луча - деление по 10 точкам пересечения на 16 кусков.



выводя постепенно лучи за пределы фигуры мы уменьшаем количество кусков.

Цитата:
параллельность сторон можно использовать как один из способов вывода точки пересечения за пределы круга.
гипотетически - можно... но тогда код обработки усложнится. Здесь у нас, по-сути, программа по искажению фигуры, а с параллельностью придётся каждый раз делать полный пересчёт всей конструкции. Просто не могу придумать нормальных критериев для проверки параллельности.
Правильно поставленная задача - три четверти решения.

Последний раз редактировалось DiemonStar; 17.02.2012 в 12:59.
DiemonStar вне форума Ответить с цитированием
Старый 17.02.2012, 12:59   #27
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

C(0,n) физически конечно бессмысленно, но в математике для удобства расчетов и формул комбинаторики принято считать, что C(n,n)=C(0,n)=1. Абстрактная схема разрезов - берем плоскость и N не параллельных прямых, в одной точке пересечения не более двух прямых, обводим окружностью, включающую в себя все точки пересечения.

Для 6 - 22 http://2yxa.ru/golovolomka/?otv=364
Изображения
Тип файла: bmp Безымянный.bmp (153.8 Кб, 129 просмотров)
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию

Последний раз редактировалось Аватар; 17.02.2012 в 13:02.
Аватар вне форума Ответить с цитированием
Старый 17.02.2012, 13:04   #28
DiemonStar
Старожил
 
Регистрация: 08.02.2012
Сообщений: 2,173
По умолчанию

Цитата:
(n+1)*n/2 та же формула, что в #16, только единица потеряна
каюсь, забыл саму пиццу добавить - отсчёт же с 1 начинается.

Вариант для 6 разрезов = 22 куска
http://s018.radikal.ru/i528/1202/99/a8f71fcb56b3.jpg

т.е. основные условия достижения максимума - все линии должны пересекаться и точки пересечения должны лежать в нашей области
Правильно поставленная задача - три четверти решения.

Последний раз редактировалось DiemonStar; 17.02.2012 в 13:15.
DiemonStar вне форума Ответить с цитированием
Старый 17.02.2012, 13:46   #29
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

большое спасибо за объяснения.
Немного посветлело...
Serge_Bliznykov вне форума Ответить с цитированием
Старый 16.03.2012, 16:06   #30
iris_ka
Пользователь
 
Регистрация: 10.02.2012
Сообщений: 44
По умолчанию

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


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Определить являится ли заданное число N автоморфорным investr Microsoft Office Word 0 07.12.2011 15:44
Заданное натуральное число записать прописью lonely_soul Паскаль, Turbo Pascal, PascalABC.NET 9 29.04.2011 12:51
Значение не увеличивается на заданное число cobria2 PHP 9 29.03.2011 11:49
Программа, которая отгадывает заданное число vakich Помощь студентам 7 24.02.2009 19:13
является ли заданное натуральное число совершенным Савинова Помощь студентам 3 19.11.2008 09:51