PASCAl
-
Привет посоны! Нужна ваша помощь (не за бесплатно конечно)
По заданной перестановке из N элементов выдать 5 следующих перестановок в лексикографическом порядке.
uses crt;
var n,i,j,min,minj,tmp,a,k,c,p:integer;
x:array[1..10]of integer;
begin
writeln('vvedite n');
readln(n);
writeln('vvedite perestanovky x');
for i:=1 to n do
read(x);
i:=n-1;
repeat
while(x>=x[i+1])and(i>=0) do
i:=i-1;
min:=x[i+1];
minj:=i+1;
for j:=i+1 to n do
if (x[j]>x) and (x[j] < min) then
begin
min:=x[j];
minj:=j;
end;
tmp:=x;
x:=x[minj];
x[minj]:=tmp;
for i:=i+1 to n do
begin
min:=x;
k:=i;
for j:=i to n do
if x[j]<min then begin min:=x[j];k:=j;end;
x[k]:=x;
x:=min;
end;
writeln;
for i:=1 to n do
write (x);
c:=c+1;
until c=5;
end.
сам код программы, но когда вводишь перестановку 54312 он должен ввести перестановку 54321 и завершить, а она делает перестановку и выдает ошибку
вознаграждение 1000 монет