Cod sursa(job #2096231)

Utilizator _Victor_Victor Ciobanu _Victor_ Data 28 decembrie 2017 20:27:52
Problema Submultimi Scor 0
Compilator fpc Status done
Runda Arhiva educationala Marime 1.09 kb
//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.