Pagini recente » Cod sursa (job #1995804) | Cod sursa (job #1879096) | Cod sursa (job #1940967) | Cod sursa (job #808632) | Cod sursa (job #1600430)
var v:array[1..30] of integer;
n,p:integer;
function valid(k:integer):boolean;
var i,j:integer;
begin
valid:=true;
for i:=1 to k-1 do
if v[i]=v[k] then
begin
valid:=false;
exit
end;
i:=1;
j:=i+1;
while (j<=p) do
begin
if v[j]=v[i] then valid:=false;
inc(i);
inc(j);
if v[j]=0 then break;
end;
// for i:=1 to k-1 do
// for j:=1 to k do if v[i]<>v[j] then valid:=true;
end;
function solutie(k:integer):boolean;
begin
if k=p then solutie:=true
else solutie:=false;
end;
procedure afisare(k:integer);
var i:integer;
begin
for i:=1 to k do write(output,v[i],' ');
writeln(output);
end;
function lexicografic(k:integer):boolean;
var i:integer;
begin
lexicografic:=true;
for i:=2 to p do
if v[i]<v[i-1] then lexicografic:=false;
end;
procedure backtrack(k:integer);
var i:integer;
begin
for i:=1 to n do
begin
v[k]:=i;
if valid(k) then
begin
if (solutie(k)) {and lexicografic(k)} then afisare(k);
backtrack(k+1);
end;
end;
end;
Begin
assign(input,'combinari.in'); reset(input);
assign(output,'combinari.out'); rewrite(output);
fillchar(v,sizeof(v),0);
readln(input,n,p);
backtrack(1);
close(input);
close(output);
end.