Текущий архив: 2006.05.14;
Скачать: CL | DM;
Вниз
Получить все перестановки чисел 0..N Найти похожие ветки
← →
BobUser (2006-04-23 21:37) [0]Сабж
← →
vrem (2006-04-23 21:45) [1]1. +1
2. проверить - это нужная перестановка?
3. печатать перестановку
в системе исчисления N+1
← →
Palladin © (2006-04-23 23:06) [2]procedure TForm1.Button1Click(Sender: TObject);
Var
a:Array of Integer;
i:Integer;
N:Integer;
Procedure _WriteArray;
Var
i:Integer;
s:String;
Begin
s:="";
For i:=0 to Length(a)-1 Do s:=s+IntToStr(a[i])+",";
If s<>"" Then SetLength(s,Length(s)-1);
Memo1.Lines.Add(s);
End;
Procedure _Exchange(i1,i2:Integer);
Begin
a[i1]:=a[i1]+a[i2];
a[i2]:=a[i1]-a[i2];
a[i1]:=a[i1]-a[i2];
End;
Procedure _Combine(l:Integer);
Var
i:Integer;
Begin
If l=Length(a)-1 Then _WriteArray Else
Begin
_Combine(l+1);
For i:=l+1 to Length(a)-1 Do
Begin
_Exchange(l,i);
_Combine(l+1);
_Exchange(l,i);
End;
End;
End;
begin
N:=2; // любое число (в разумных пределах ессно)
SetLength(a,N+1);
For i:=0 to Length(a) Do a[i]:=i;
_Combine(0);
end;
Страницы: 1 вся ветка
Текущий архив: 2006.05.14;
Скачать: CL | DM;
Память: 0.45 MB
Время: 0.013 c