Pagini recente » Cod sursa (job #281026) | Cod sursa (job #481387) | Cod sursa (job #573278) | Cod sursa (job #2160759) | Cod sursa (job #220942)
Cod sursa(job #220942)
Type stiva=array[1..18] of integer;
var f,g:text;
st:stiva;
n,k,i,k1:integer;
as,ev:boolean;
procedure init(var st:stiva;k:integer);
Begin
st[k]:=0;
end;
procedure succesor(var as:boolean;var st:stiva;k:integer);
Begin
If st[k]<n then Begin
st[k]:=st[k]+1;
as:=true;
end
else as:=false;
end;
procedure valid(var ev:boolean;st:stiva;k:integer);
Begin
ev:=true;
For i:=1 to k-1 do
If st[i]=st[k] then ev:=false;
For i:=2 to k do
If st[k-1]>st[k] then ev:=false;
end;
function solutie(k:integer):boolean;
Begin
solutie:=(k=k1);
end;
procedure tipar;
Begin
For i:=1 to k do Write(g,st[i],' ');
Writeln(g);
end;
Begin
Assign(f,'combinari.in');Reset(f);
Assign(g,'combinari.out');Rewrite(g);
Read(f,n,k1);
k:=1;
init(st,k);
While k>0 do
Begin
repeat
succesor(as,st,k);
If as then valid(ev,st,k);
until (not as) or (as and ev);
if as then Begin
If solutie(k) then tipar
else Begin
k:=k+1;
init(st,k);
end;
end
else k:=k-1;
end;
Close(f);
Close(g);
end.