g5u Junior

Data inscrierii: 08/Noi/2007 Mesaje: 4
|
Trimis: 22/11/2007 16:03 Titlul subiectului: Problema plata unei sume |
|
|
| Cod: | var n,s,i,sum:integer;
sol,nr,tip:array[1..10]of integer;
procedure init(k:integer);
begin
sol[k]:=-1;
end;
function succesor(k:integer):boolean;
begin
if sol[k]<nr[k] then
begin
sol[k]:=sol[k]+1;
succesor:=true;
end
else succesor:=false;
end;
function valid(k:integer):boolean;
var i,s1:integer;
begin
valid:=true;
sum:=0;
for i:=1 to k do
sum:=sum+(sol[i]*tip[i]);
if sum>s then valid:=false;
if k>n then valid:=false;
end;
procedure tipar;
var i:integer;
begin
for i:=1 to n do
write(sol[i],' ');
writeln;
end;
procedure back(k:integer);
begin
sum:=0;
for i:=1 to k do
sum:=sum+(sol[i]*tip[i]);
if (s=sum) and (n+1=k) then
tipar
else
begin init(k);
while succesor(k) do
if valid(k) then back(k+1);
end;
end;
begin
readln(n);
readln(s);
for i:=1 to n do begin
write ('tip[',i,']=');readln(tip[i]);
end;
for i:=1 to n do begin
write ('nr[',i,']=');readln(nr[i]);
end;
back(1);
readln;
end.
|
_________________ Andrei Valentin |
|