Учитывая У меня есть список целых чисел, как это:Matching целых чисел в списке
List<int> items = new List<int> {200, 100, 50, 20, 10, 5, 2, 1};
и дал мне есть несколько, скажем 13, как я буду найти номера из списка, который добавляет до 13, используя LINQ (или любым другим способом). Список всегда находится в порядке убывания.
Например: 13 = 10 + 2 + 1, поэтому операция даст LINQ меня список целых чисел, содержащих 10,2 и 1.
Если мы не можем найти полный матч, как и в случае 24, это нормально для генерирования исключения.
усилию:
[Test]
public void Should_find_subset()
{
var items = new List<int>() {200, 100, 50, 20, 10, 5, 2, 1};
var find = 13;
var result = new List<int>();
var subset = new List<int>();
bool found = false;
foreach (var item in items)
{
if (item == find)
{
result.Add(item);
found = true;
}
if (item < find)
{
subset.Add(item);
found = subset.Sum() == find;
}
if (found)
break;
}
}
Спасибо,
-Mike
Любые усилия до сих пор? –
у вас еще что-то пробовали? –
Можете ли вы показать нам некоторые сикпеты того, что вы пробовали? – Michael