Treceți la conținutul principal

Prezentat

Forum 02.03.21 Tehnici de programare Limbajul Pascal

    • Tehnica Greedy -Statistica • Problema Comis Voiajerului • Metoda Backtraking Problema Reginelor • Turnuri de Hanoi • Tehnici de sortare metoda Bublesort • Metoda Trierii Pușculița

Metoda Trierii Pușculița

 


Program Triere; program pusculita;

var x,N, G, Smin, n1,n5,n10,n25,n50:integer;{am adaugat variabila x pentru suma}

function suma(n1,n5,n10,n25,n50:integer):integer;
begin
suma:=n1+5*n5+10*n10+25*n25+50*n50;

writeln('$n1=',n1,' $n5=',n5,' $n10=',n10,' $n25=',n25,' $n50=',n50); {am adaugat afisarea monedelor}
end;

function Rezolvare(n1,n5,n10,n25,n50:integer)
:boolean;
var nr, gr:integer;
begin
nr:=n1+n5+n10+n25+n50;
gr:=1*n1+2*n5+3*n10+4*n25+5*n50;
Rezolvare:=(nr=N) and (gr=G);
end;

procedure prelucrare(n1,n5,n10,n25,n50:integer);
var S:integer;
begin
S:=suma(n1,n5,n10,n25,n50);
if S<Smin then Smin:=S;
x:=s; 
end;

begin
write('N='); read(N); readln;
write('G='); read(G); readln;
Smin:=(50*N+1);

for n1:=0 to n do
for n5:=0 to n do
for n10:=0 to n do
for n25:=0 to n do
for n50:=0 to n do

if Rezolvare(n1,n5,n10,n25,n50)
then Prelucrare(n1,n5,n10,n25,n50);

if Smin=(50*N+1) then writeln(' Combinatie incorecta pentru valorile N și G')
else writeln('Smin=',Smin); {Smin-suma minima de nominal in pusculita} 

writeln('Smax=',x); {am adaugat afisarea sumei maxime de nominal in pusculita}

{daca indicam N=2 -pina la doua monede din fiecare tip de moneda(n1,n5,n10,n25,n50)
si G=3 trei aruncari in pusculita atunci avem doua monede de n1 si o moneda de n5 si Smin=7 si Suma=7}

end.


Comentarii

Postări populare