|
|
ru.algorithms- RU.ALGORITHMS ---------------------------------------------------------------- From : Eugeny Malkov 2:5002/62.13 27 Jun 2001 07:22:10 To : Sergei Popov Subject : <none> --------------------------------------------------------------------------------
Здравствуй, братец Sergei ! Давно не виделись.
Вcк 24/06/2001, Sergei Popov писал письмо для All:
SP> нужен простейший алгоритм.
SP> нечто вроде лототрона, где наугад выбирается последовательность шаров с
SP> разными номерами, только нужны _все_ комбинации. типа есть массив из
SP> скольки-то элементов (цифр или букв), надо как-то вывести на экран/в файл
SP> все возможные комбинации из этих элементов, с условием, что уже
SP> использованные элементы не используются.
SP> простейшая вещь вроде? может даже у вас тут FAQ есть, а там ссылки или уже
SP> есть нечто готовенькое?..
Вот, недавно писал нечто подобное на TP6. Переделать я думаю будет не сложно.
uses crt;
type variant=array[1..20] of byte;
var N:byte;
a:variant;
All:longint;
procedure perebor(a:variant; len:byte);
var not_a:variant; { not_a[i] = 1, если i не содержится в a, иначе 0 }
i,j:byte;
begin
if len=N then
begin
for i:=1 to N do
write(a[i],' ');
writeln;
all:=all+1;
end
else
begin
for i:=1 to N do not_a[i]:=1;
for i:=1 to len do not_a[a[i]]:=0;
for i:=1 to N do
if not_a[i]=1 then
begin
a[len+1]:=i;
perebor(a,len+1);
end;
end
end;
begin
clrscr;
Writeln('Эта программа выдает все перестановки чисел 1..N');
Write('Введите N (1..20)');
readln(N);
if n<1 then n:=1;
if n>20 then n:=20;
all:=0;
perebor(a,0);
Writeln('Всего сформировано ', all,' вариантов');
end.
Сpд 27/06/2001, 08:22 С любовью, Буратино.
--- GoldED+/W32 1.1.4.3
* Origin: It's a simplest life. (2:5002/62.13)
Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор
Архивное /ru.algorithms/32753b3943e4.html, оценка из 5, голосов 10
|