Pagini recente » Cod sursa (job #465893) | Cod sursa (job #1963315) | Cod sursa (job #14862) | Cod sursa (job #1659487) | Cod sursa (job #1153895)
program permutari;
var st:array[1..9] of integer;
i,n,p:integer;
procedure init;
begin
readln(n);
for i:=1 to 9 do st[i]:=0;
end;
function valid(p:integer):boolean;
begin
valid:=true;
for i:=1 to p-1 do
if st[i]=st[p] then valid:=false;
end;
procedure tipar;
begin
for i:=1 to n do write(st[i],' ');
writeln;
end;
procedure back(p:integer);
begin
p:=1; //plecam de la primul nivel }
st[p]:=0; //initializam nivelul cu 0}
while p>0 do {cat timp stiva nu este vida}
begin
if st[p]<n then {mai exista valori neincercate pe nivelul p}
begin
st[p]:=st[p]+1; {st[p]<-<o noua valoare din multimea valorilor posibile>}
if valid(p) then
if p=n then tipar {solutia este finala}
else begin
p:=p+1; {trecem la nivelul urmator}
st[p]:=0; {initializam valoarea de pe nivel cu 0}
end;
end
else p:=p-1; {pas inapoi}
end;
end;
begin
assign(input,'permutari.in'); reset(input);
assign(output,'permutari.out'); rewrite(output);
init;
back(1);
close(output);
end.