BluePink BluePink
XHost
Servere virtuale de la 20 eur / luna. Servere dedicate de la 100 eur / luna - servicii de administrare si monitorizare incluse. Colocare servere si echipamente de la 75 eur / luna. Pentru detalii accesati site-ul BluePink.

Backtracking


Program aranjamente;

const nmax=25;

type vector=array[1..nmax] of integer

var x:vector; n:integer;

Procedure CITIRE;

begin

  write('n=');readln(n);

end;

Procedure INIT(k:integer);

begin

  x[k]:=0;

end;

Procedure EXISTA(k:integer):boolean;

begin

  EXISTA:=(x[k]'<'n);

end;

Function CONT(k:integer):boolean;

var i:integer;

begin

  CONT:=TRUE;

   for i:=1 to k-1 do

    if x[i]=x[k] then

     CONT:=FALSE;

end;

Function SOLUTIE(k:integer):boolean;

begin

   SOLUTIE:=(k=n);

end;

Procedure TIPAR(k:integer);

var i:integer;

begin

   for i:=1 to k do

  write(x[i]:3);

end;

Procedure BKT;

var k:integer;

begin

   k:=1;

   INIT(k);

   while k'>'0 do

    if EXISTA(k) then

     begin

      x[k]:=x[k]+1;

      if CONT(k) then

      if SOLUTIE(k) then

      TIPAR(k)

     else

    begin

     k:=k+1;

     INIT(k);

    end;

    end

    else

     k:=k-1;

end;

begin{p.p}

CITIRE;

BKT;

readln;

end.


   Programul de generare al aranjamentelor utilizeaza o procedura bkt formata din urmatoarele subprograme

-Procedure INIT-initializeaza elementul k cu 0 in acest element a se genera solutiile

-Function EXISTA-care verifica daca generarea elementelor are sens adica x[k]'<'n

-Function CONT-verifica conditiile interne degenararea vectorului prin valoarea fiecarui element cu predecesorii sai

-Function SOLUTIE-valideaza un vector solutia urmand criteriul k=n.Daca este verificat si CONT si EXISTA inseamna ca avem o solutie valida

-Procedure TIPAR-are sens la existenta unui termen valid

-Programul Principal contine un subprogram de incarcare a elementului n si a apel de procedura bkt,apel care va genera permutari de n elemente

   Aceasta tehnica utilizata pentru generarea aranjamentelor poate fi utilizata si pentru probleme de combinatorica a cum ar fi generarea permutarilor si generarea combinarilor