Когда речь идет о весах, то в голову сразу приходят графы, но я не придумал, как их здесь применить
Мне кажется, что не совсем очевидно т.з., поэтому написал 2 варианта трактования:
- В первом случае, веса будут глобально привязаны к параметрам -- т.е. у шаров и корзин будет статичное число, отражающее сумму весов их параметров. Тогда для выбора подходящей для шара корзины будет необходимо найти корзину с наименьшей "разницей" в весе (ex. есть корзины с суммой весов 15 и 25, тогда шар с весом 18 должен быть положен в первую). Мне этот вариант кажется нелогичным.
- Иначе, если каждая корзина диктует веса для каждого своего параметра (что мне кажется более правильным), то я бы сделал примерно такую схему, и искал бы корзину с максимальной суммой весов для входящего шара (псевдо-SQL код для нахождения веса параметра
IF(BALL.COLOR = BASKET.COLOR, 1, 0) * BASKET.COLOR.WEIGHT). Но такое решение будет тяжело работать при большом количестве параметров и корзин.