Pagini recente » Cod sursa (job #102848) | Cod sursa (job #1297339) | Cod sursa (job #2289698) | Cod sursa (job #115592) | Cod sursa (job #458072)
Cod sursa(job #458072)
{3. sa se tipareasca toate combinarile 1..n luate cate p}
program permutare;
type stiva=array[1..100] of integer;
var st:stiva;
n,k,p:integer;
as,ev:boolean;
var f,g:text;
procedure citire;
begin
assign(f,'combinari.in');
reset(f);
readln(f,n,p);
close(f);
end;
procedure init;
begin
st[k]:=0;
end;
procedure succesor;
begin
if st[k]<n then
begin
as:=true;
st[k]:=st[k]+1;
end
else
as:=false;
end;
procedure valid;
var i:integer;
begin
for i:=1 to k-1 do
if (st[i]=st[k]) or (st[i]>st[i+1]) then
begin
ev:=false;
exit;
end;
ev:=true;
end;
function solutie:boolean;
begin
solutie:=k=p;
end;
procedure tipar;
var i:integer;
begin
for i:=1 to k do
write(g,st[i],' ');
writeln(g);
end;
begin
assign(g,'combinari.out');
rewrite(g);
citire;
k:=1;
init;
while k>0 do
begin
repeat
succesor;
if as then valid;
until (as and ev) or not as;
if as then
if solutie then
tipar
else
begin
inc(k);
init;
end
else
dec(k);
end;
close(g);
end.