|
|
ru.algorithms- RU.ALGORITHMS ---------------------------------------------------------------- From : Ihor Bobak 2:5020/400 01 Jun 2001 11:54:09 To : All Subject : Re: Hомер перестановки --------------------------------------------------------------------------------
> Возник вот такой вопрос:
> есть некоторая перестановка чисел из множества.
> (очевидно, количество этих перестановок N! - факториал)
> Как бы так задать нумерацию этих перестановок,
> чтобы для данной перестановки, быстро определить ее
> порядковый номер, и, что главнее, чтобы для кажодго
> номера быстро определить перестановку,
var
n,i,j,l,Res: longint;
a, Fact: array[0..12] of longint;
begin
readln(n);
for i:=1 to n do read(a[i]);
Fact[0] := 1;
for i:=1 to 12 do
Fact[i] := Fact[i-1]*i;
res := 1;
for i:=1 to n do
begin
l := 0;
for j:=1 to i-1 do
if a[j]<a[i] then inc(l);
Res := Res + (a[i]-1-l)*Fact[n-i];
end;
writeln(Res);
end.
--- ifmail v.2.15dev5
* Origin: MTU-Intel ISP (2:5020/400)
Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор
Архивное /ru.algorithms/910438d6a9b4.html, оценка из 5, голосов 10
|