Реферат: Механизм бектрекинга
else
begin
{освобождаем отдел}
s [level]: =0;
b [level]: =level;
level: =level-1;
end;
end;
write ('Наибольший вес - ',max);
end.
3. Бектрекинг
Реализовать механизм бектрекинга очень легко. Вспомним, что его суть в том, чтобы организовать отскок в переборе вариантов назад когда выяснится, что идти вперёд нельзя. Такой отскок у нас уже есть. Вот эта группа операторов:
{освобождаем отдел}
s [level]: =0;
b [level]: =level;
level: =level-1;
Заметьте, что этой группе операторов абсолютно без разницы причина по которой к неё обращаются. Поэтому добавим в программу ещё одну причину обращения к этой группе. А именно
Если сумма набранного товара больше имеющейся наличности
ТО освобождаем отдел.
Заметим, также, что группа операторов "Освобождаем отдел" повторяется дважды поэтому есть смысл организовать её в виде процедуры. А вот как выглядит теперь программа:
program example;
uses crt;
var
b,s: array [1. .100] of word;
a: array [1. .100] of record
cost,ves: word;
end;
sum_ves,sum_cost,max,money,level, i,n: integer;
procedure back;
begin