如果我有一系列高尔夫结果:
-3, +5, -3, 0, +1, +8, 0, +6, +2, -8, +5
Run Code Online (Sandbox Code Playgroud)
我需要找到一个具有最小总和的三个相邻数字的序列.对于此示例,子序列将是:
[-3, +5, -3]
[+5, -3, 0]
[-3, 0, +1]
... etc ...
[+2, -8, +5]
Run Code Online (Sandbox Code Playgroud)
最小序列[-3, 0, +1]的总和为-2.
您可以使用此LINQ查询:
int[] golfResult = { -3, +5, -3, 0, +1, +8, 0, +6, +2, -8, +5 };
var combinations = from i in Enumerable.Range(0, golfResult.Length - 2)
select new {
i1 = golfResult[i],
i2 = golfResult[i + 1],
i3 = golfResult[i + 2],
};
var min = combinations.OrderBy(x => x.i1 + x.i2 + x.i3).First();
int[] minGolfResult = { min.i1, min.i2, min.i3 }; // -3, 0, +1
Run Code Online (Sandbox Code Playgroud)
当然,您需要检查阵列中是否至少有三个结果.
| 归档时间: |
|
| 查看次数: |
172 次 |
| 最近记录: |