次のような整数のリストがあるとします。
List<int> items = new List<int> {200, 100, 50, 20, 10, 5, 2, 1};
そして、私が13などの数字を持っている場合、LINQを使用して(または他の方法で)13になるリストから数字を見つけるにはどうすればよいですか。リストは常に降順です。
例: 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;
}
}
ありがとう、
-マイク