cam ơn bạn mình cũng hiểu cách đánh dãy nhị phân trong mảng x để được tờ tiền cần lấy nhưng thật sự mình ko hiểu thủ tục đệ quy quay lui này hoặt động như thế nào
procedure backTrack(i:longint);
var j :longint;
begin
for j:=0 to 1 do begin
x:=j;
sum:=sum + x*t;
if (i=n) then check(x)
else if sum<=s then backTrack(i+1);
if ok then exit; {nếu ñã tìm ñược nghiệm thì không duyệt nữa}
sum:=sum - x*t;
mong bạn giải thích giải thuật này cho mình với ak..
end;
end;
procedure backTrack(i:longint);
var j :longint;
begin
for j:=0 to 1 do begin
x:=j;
sum:=sum + x*t;
if (i=n) then check(x)
else if sum<=s then backTrack(i+1);
if ok then exit; {nếu ñã tìm ñược nghiệm thì không duyệt nữa}
sum:=sum - x*t;
mong bạn giải thích giải thuật này cho mình với ak..
end;
end;