tasks a-s
This commit is contained in:
parent
47bf37c096
commit
b83f433714
12433 changed files with 156208 additions and 123 deletions
71
Task/Permutations/Pascal/permutations.pascal
Normal file
71
Task/Permutations/Pascal/permutations.pascal
Normal file
|
|
@ -0,0 +1,71 @@
|
|||
program perm;
|
||||
|
||||
var
|
||||
p: array[1 .. 12] of integer;
|
||||
is_last: boolean;
|
||||
n: integer;
|
||||
|
||||
procedure next;
|
||||
var i, j, k, t: integer;
|
||||
begin
|
||||
is_last := true;
|
||||
i := n - 1;
|
||||
while i > 0 do
|
||||
begin
|
||||
if p[i] < p[i + 1] then
|
||||
begin
|
||||
is_last := false;
|
||||
break;
|
||||
end;
|
||||
i := i - 1;
|
||||
end;
|
||||
|
||||
if not is_last then
|
||||
begin
|
||||
j := i + 1;
|
||||
k := n;
|
||||
while j < k do
|
||||
begin
|
||||
t := p[j];
|
||||
p[j] := p[k];
|
||||
p[k] := t;
|
||||
j := j + 1;
|
||||
k := k - 1;
|
||||
end;
|
||||
|
||||
j := n;
|
||||
while p[j] > p[i] do j := j - 1;
|
||||
j := j + 1;
|
||||
|
||||
t := p[i];
|
||||
p[i] := p[j];
|
||||
p[j] := t;
|
||||
end;
|
||||
end;
|
||||
|
||||
procedure print;
|
||||
var i: integer;
|
||||
begin
|
||||
for i := 1 to n do write(p[i], ' ');
|
||||
writeln;
|
||||
end;
|
||||
|
||||
procedure init;
|
||||
var i: integer;
|
||||
begin
|
||||
n := 0;
|
||||
while (n < 1) or (n > 10) do
|
||||
begin
|
||||
write('Enter n (1 <= n <= 10): ');
|
||||
readln(n);
|
||||
end;
|
||||
for i := 1 to n do p[i] := i;
|
||||
end;
|
||||
|
||||
begin
|
||||
init;
|
||||
repeat
|
||||
print;
|
||||
next;
|
||||
until is_last;
|
||||
end.
|
||||
Loading…
Add table
Add a link
Reference in a new issue