Вниз
Скачать: CL | DM;

Помогите с комбинаторикой   Найти похожие ветки 

 
Труп Васи Доброго ©   (2008-11-27 15:45) [0]

Всем привет!
Попалась задача выбрать из массива элементов неповторяющиеся тройки, то есть просто выбрать все сочетания из N элементов по 3.
Пытался придумать как обеспечить неповторяемость... в голову лезли только громоздкие и поэтому пугающие трёхэтажные проверки.
Может кто сталкивался с такой задачей, подскажите умную мысль.


 
Юрий Зотов ©   (2008-11-27 15:56) [1]

Тип элементов массива?


 
Труп Васи Доброго ©   (2008-11-27 15:59) [2]

> [1] Юрий Зотов ©   (27.11.08 15:56)
> Тип элементов массива?

ТРoint, да какая разница??? Главное чтобы если выбраны (A[1],A[20],A[45]) не выбирались бы (A[20],A[1],A[45]), (A[1],A[45],A[20]) и т.д.


 
Palladin ©   (2008-11-27 16:04) [3]

For i:=0 to N-1 Do
For j:=i+1 to N-1 Do
 For k:=j+1 to N-1 Do
  (A[i],A[j],A[K])


 
Труп Васи Доброго ©   (2008-11-27 16:17) [4]

> [3] Palladin ©   (27.11.08 16:04)

Вот рука мастера! Всё гениальное - просто! Крутилась ведь мыслишка рядом, но вот до i+1 и j+1 не дотянул. Старый видать совсем стал ... пора думать об отдыхе, а не контрольные решать :)


 
b z   (2008-11-27 16:32) [5]

Тут вот есть  http://www.codeproject.com/KB/recipes/Combinatorics.aspx, правда с#, может пригодится. :)


 
TUser ©   (2008-11-27 20:19) [6]

держи ище на копейку быстрее

For i:=2 to N-1 Do
For j:=1 to i-1 Do
For k:=0 to j-1 Do
 (A[i],A[j],A[K])


 
uw ©   (2008-11-28 00:28) [7]

А что будет, если в массиве повторяющиеся элементы?
Я бы отсортировал то, что получилось у Палладина, и быбросил повторяющиеся тройки.


 
Труп Васи Доброго ©   (2008-11-28 00:42) [8]

> А что будет, если в массиве повторяющиеся элементы?

Повторяющихся не бывает по условию задачи.
Есть массив точек, надо найти все тройки точек, образующие прямоугольные треугольники. Вот чтобы один и тот же треугольник три раза не находить мне и нужно было выбрать сочетания из N по 3 без повторов. Решение Палладина помогло, задача решена. Всем спасибо!


 
uw ©   (2008-11-28 00:52) [9]

Труп Васи Доброго ©   (28.11.08 00:42) [8]
Повторяющихся не бывает по условию задачи.
Есть массив точек,


А если в массиве точек есть повторяющиеся точки?


 
Труп Васи Доброго ©   (2008-11-28 00:59) [10]

> А если в массиве точек есть повторяющиеся точки?

Скажи, вот чисто физически (да хоть геометрически) как на плоскости могут быть две разные точки с одинаковыми координатами??? Геометрия говорит что это одна точка и я склонен ей верить.
К тому же я сказал - их нет ПО УСЛОВИЮ ЗАДАЧИ!
Соответственно я не буду делать плавающий велосипед, если он НИКОГДА не будет использоваться на воде.


 
uw ©   (2008-11-28 01:04) [11]

Да я же не против, если по условию задачи все точки разные! Но ведь сначала ты говорил про массив элементов. Как можно было понять, что это точки? Потом ты сказал, что это массив точек. Как можно было понять, что в массиве точки все разные. Теперь ты говоришь про "чисто физически"... Я не против :)



Страницы: 1 вся ветка

Скачать: CL | DM;



Память: 0.47 MB
Время: 0.01 c
2-1229087384
webpauk
2008-12-12 16:09
2009.01.25
Скорость


15-1227628921
Kerk
2008-11-25 19:02
2009.01.25
4:3 , 16:9 и другие


2-1228893500
Mefis
2008-12-10 10:18
2009.01.25
Как информацию с формы переместить в ячейку таблицы.


2-1228889359
mfender
2008-12-10 09:09
2009.01.25
Ключи реестра в перечислимом свойстве


15-1227448089
Григорьев Антон
2008-11-23 16:48
2009.01.25
Тесты на знание Delphi




   Наверх