Здравствуйте, я создал эту тему не просто так, мне нужна помощь в решении задачи по комбинаторике. Нужно написать в TURBO PASCAL программу, которая должна будет "Распечатать все сочетания из множества E6={a,b,c,d,e,f} по 3 элемента".
Если кто нибудь может сделать задачу помогите пожалуйста.
Товарищи нуждающиеся! А давайте заведем за правило: вместо "нужна помощь" кратко пишем, в чем, собственно, нуждаемся. SW.
ТП не помню практически, ибо давно было. Попробуй накатать по алгоритму:
1. Описываем матрицу А=[a,b,c,d,e,f]
2. Открываем цикл i. Берем первый элемент x=A(i)
3. Открываем цикл j, условие - j<>i. Берем второй элемент y=A(j)
4. Открываем цикл k, условие k<>j. Берем третий элемент z=A(k)
5. print x,y,z. Закрываем цикл k.
6. Закрываем цикл j.
7. закрываем цикл i.
8. End.
Кажется, должно сработать.... _________________ Возможно, в этом мире ты всего лишь человек. Но для кого-то ты весь мир.
"Распечатать все сочетания из множества E6={a,b,c,d,e,f} по 3 элемента".
мммда... я много-много лет занимаюсь программингом (первые коды на asm-е выдал лет в 12...), создал на этом деле бизнес...
...но я не понял смысла задачи.
это, я так понял, учебное задание? из института? _________________ мнений может быть много. правда вообще у каждого своя. но истина -- она одна и только одна...
Пардон, турбопаскаля не знаю, но примитивная реализация на любом языке тривиальна до омерзения. На питоне так даже в интерактивном режиме просто. Кстати, не понятно, что за зверь эти сочетания. Могут ли элементы повторятся? Могут ли элементы переставляться7 Если это таки подмножества (нет повторений и перестановок), то условие во внутреннем цикле вместо трёх не равно нужно писать два строго меньше.
Код:
~$ python
Python 2.6.1+ (r261:67515, Apr 4 2009, 09:51:39)
[GCC 4.3.3] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> def threes(a):
... for x in a:
... for y in a:
... for z in a:
... if x!=y and y!=z and x!=z: yield (x,y,z)
...
>>> a=[1,2,3,4,5]
>>> for c in threes(a): print c
...
(1, 2, 3)
(1, 2, 4)
(1, 3, 2)
(1, 3, 4)
(1, 4, 2)
(1, 4, 3)
(2, 1, 3)
(2, 1, 4)
(2, 3, 1)
(2, 3, 4)
(2, 4, 1)
(2, 4, 3)
(3, 1, 2)
(3, 1, 4)
(3, 2, 1)
(3, 2, 4)
(3, 4, 1)
(3, 4, 2)
(4, 1, 2)
(4, 1, 3)
(4, 2, 1)
(4, 2, 3)
(4, 3, 1)
(4, 3, 2)
>>>
кде то я это уже видел, наверно в универе, симестра два назад
вопрос канечна пральный....
Вадим писал(а):
Кстати, не понятно, что за зверь эти сочетания. Могут ли элементы повторятся? Могут ли элементы переставляться7 Если это таки подмножества (нет повторений и перестановок), то условие во внутреннем цикле вместо трёх не равно нужно писать два строго меньше.
если переставновки и сочетания учитывать - то да, получится список значений как у вадима, если же нет - то только строгие последовательности. но насколько мне помнится эта задачка вроде как раз идёт в теме про перестановки и сочетания.
а если брать реализацию на паскале - три цикла, два из которох вложенные, в третьем команда принт с параметрами a[x,y,z]. в начале задаём m:=array of....
потом три цикла перебора внутренних координат по значениям массива с последующей либо записью в новый массив либо командой принт в третьем цикле. если конечный - массив, то в конце массив на принт и всо _________________ In nomine Padre et Filie et Spiritu Sancte...
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете голосовать в опросах Вы не можете вкладывать файлы Вы можете скачивать файлы