Хотел спросить про алгоритм, решающий задачу о неограниченном рюкзаке (Unbounded Knapsack Problem) , но при этом веса предметов являются дробными числами.
Ну если веса предметов рациональные, то это всё равно, что целые.
Умножаем все веса (предметов и рюкзака) на НОК знаменателей весов предметов Приводим все веса к общему знаменателю, умножаем на него вес рюкзака, отбрасывем знаменатели у весов предметов и вуаля...