где ki - целые (0?ki?[W/wi]),


где ki - целые (0?ki?[W/wi]), квадратные скобки означают целую часть числа. Рассмотрим простой переборный вариант решения задачи, работоспособный только для небольших значений n (определить, для каких?). Итак, данные: Сonst MaxN=????; Var n,w:integer;{количество предметов, максимальный вес} Weight,Price:array[1..MaxN] of integer;{вес, стоимость предметов} Best,Now:array[1..MaxN] of integer;{наилучшее, текущее решения} MaxPrice:LongInt;{наибольшая стоимость} Решение, его основная часть - процедура перебора: Procedure Rec(k,w:integer;st:LongInt); {k - порядковый номер группы предметов, w - вес, который следует набрать из оставшихся предметов, st - стоимость текущего решения} var i:integer; begin if (k>n) and (st>MaxPrice) then begin {найдено решение} Best:=Now;MaxPrice:=st; end else if k<=n then for i:=0 to w div Weight[k] do begin Now[k]:=i; Rec(k+1,W-i*Weight[k],st+i*Price[k]); end; end; Инициализация
Индекс
Элементарные функции    Линейные уравнения    Нелинейные уравнения    Случайные числа


Hosted by uCoz