Pagini recente » Cod sursa (job #2087649) | Cod sursa (job #2182023) | Cod sursa (job #2523397) | Cod sursa (job #1298794) | Cod sursa (job #2096231)
//Submultimi
//Degenerat toate submultimile posibile ale unei multimi de numere consecutive
// s care incepe de la 1 si se termina la n.
//Exemplu: n=3 | multime vida, {1}, {1,2}, {1,2,3}, {1,3}, {2,3}, {3}
Program Submultimi;
type natural = 0..maxint;
vect= array[natural] of natural;
var v:vect;
n:natural;
//f,g:text;
function sol(k:natural):boolean;
begin
if k<=n then sol:=true
else sol:=false;
end;
procedure scrie(k:natural);
var i:natural;
begin
for i:=1 to k do
write(g,v[i], ' ');
writeln(g);
end;
procedure backtrack(k:natural);
var i:natural;
begin
for i:=v[k-1]+1 to n do begin //Pastram sirul strict crescator cu i:=v[k-1]+1
v[k]:=i;
if sol(k) then begin
scrie(k);
backtrack(k+1); // Pentru a genera toate submultimile de toate marimile
//(nu numai celea de marimea 1 deoarece fara el numai acestea se afiseaza)
//folosim backtrack(k+1)
end
else backtrack(k-1);
end;
end;
begin
assign(f,'submultimi.in');
assign(g,'submultimi.out');
reset(f);
rewrite(g);
readln(f,n);
//writeln('multime vida');
backtrack(1);
close(f);
close(g);
//readln;
end.