Очень простой вопрос.
![]() |
Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
|
| ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
| [18.97.9.174] |
|
|
правила раздела Алгоритмы

Очень простой вопрос.
|
Сообщ.
#1
,
|
|
|
|
Может, кто подскажет, как написать прогу, которая выводит все возможные перестановки n элементов массива, с возможностью выдачи запроса на вывод следующей перестановки.
Заранее благодарен. |
|
Сообщ.
#2
,
|
|
|
|
И очень неконкретный вопрос.
|
|
Сообщ.
#3
,
|
|
|
|
Решается рекурсией, а код проги на Паскале вроде вот такой:
Вход: массив р, содержащий элементы любого типа; N размер массива р ![]() ![]() Procedure Reverse(m:integer);<br>var i,j:integer;<br>begin<br> i:=1;j:=m;<br> while i<j do<br> begin<br> b:=p[i];p[i]:=p[j];p[j]:=b;<br> i:=i+1;j:=j-1;<br> end;<br>end;<br>Procedure AntiLex(m:integer);<br>var i:integer;<br>begin<br> if m=1<br> then вывод р<br> else for i:=1 to m do<br> begin<br> AntiLex(m-1);<br> if i<m<br> then begin<br> b:=p[i];p[i]:=p[m];p[m]:=b;<br> Reverse(m-1)<br> end;<br> end;<br>end;<br>begin<br> AntiLex(N);<br>end. зы надеюсь, что правильно понял вопрос |