Задача о рюкзаке с дополнением - Prolog

Узнай цену своей работы

Формулировка задачи:

Привет всем! Никак неполучается решить задачу. дано: камни с весом и несколько рюкзаков с максимальной вместимостью. нужно: как можно вместить камни в рюкзаки, с условием, что нелзя вмещять больше чем N камней в каждый рюкзак. спасибо!

Решение задачи: «Задача о рюкзаке с дополнением»

textual
Листинг программы
kamen(4).
kamen(3).
kamen(2).
kamen(6).
kamen(1).
 
 
weight([],0).
weight([kamen(W) | Rest], X) :-
  weight(Rest,RestW),
  X is W + RestW.
  
 
subseq([],[]).
subseq([Item | RestX], [Item | RestY]) :-
  subseq(RestX,RestY).
subseq(X, [_ | RestY]) :-
  subseq(X,RestY).
  
 
legalKnapsack(Pantry, Capacity, Knapsack) :-
    subseq(Knapsack, Pantry),
    weight(Knapsack, W),
    W =< Capacity.
    
    
allLegalKnapsacks(Pantry, Capacity, ListOfLegalKnapsacks) :-
    findall(LegalKnapsack, legalKnapsack(Pantry, Capacity, LegalKnapsack), ListOfLegalKnapsacks).

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

5   голосов , оценка 3.2 из 5