получить возможные комбинации в DataRow для заданного значения

в .Net есть ли способ найти совпадающие комбинации для заданного значения в таблице данных?

таблица данных такая

ItemID, название, количество

1, A, 2

2, B, 1

3, C, 3

4, D, 4

5, E, 5

необходимо получить возможные комбинации с соответствующим столбцом количества.

НАПРИМЕР. если бы я прошел 8

нужен результат DataTable (2+1+5 = 8, 3+5 = 8, 1,3,4 = 8) как

combinationID, Quantity, NoOfItems (количество строк для комбинации ID)

1, 2, 3

1, 1, 3

1, 5, 3

2, 3, 2

2, 5, 2

3, 1, 3

3, 3, 3

3, 4, 3


person Community    schedule 12.01.2011    source источник


Ответы (2)


Вы можете использовать рекурсивный CTE, чтобы найти все комбинации, как в этом SO -Вопрос: Получение всех возможных комбинаций, которые подчиняются определенным условие с MS SQL

person Tim Schmelter    schedule 12.01.2011

Я получил идею из алгоритма С# - найти наименьшее количество необходимых объектов

но все еще не могу изменить мое требование. Coz. в моем случае есть повторяющиеся значения,

var list = new[] { 2, 3, 4, 6, 7, 2, 4, 5, 3 };
Array.Sort<int>(list);
var ans = Knapsack(list, 9);

это вызовет исключение InvalidOperationException ("Последовательность не содержит элементов")

Любая идея решить эту проблему?

person Community    schedule 13.01.2011
comment
получил этот заголовок stackoverflow.com/questions/83547/ - person ; 21.01.2011