![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Получить все перестановки чисел 0..N [D7, XP]
BobUser © (2006-04-23 21:37:00)Сабж
Palladin (2006-04-23 23:06:00) [1]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;
vrem (2006-04-23 21:45:00) [2]1. +1
2. проверить - это нужная перестановка?
3. печатать перестановку
в системе исчисления N+1