我想要數組中的數字的總和並且不超過1002我該如何解決它? 它不是要緊的總結所有的數字,但只有那些誰出線在C中總結一個整數數組#
我這樣做的,但我認爲這是不正確的做法
List<int> list = new List<int> { 4, 900, 500, 498, 4 };
int sum = list.Skip(2).Take(3).Sum();
Console.WriteLine(sum);
Console.ReadLine();
我想要數組中的數字的總和並且不超過1002我該如何解決它? 它不是要緊的總結所有的數字,但只有那些誰出線在C中總結一個整數數組#
我這樣做的,但我認爲這是不正確的做法
List<int> list = new List<int> { 4, 900, 500, 498, 4 };
int sum = list.Skip(2).Take(3).Sum();
Console.WriteLine(sum);
Console.ReadLine();
目前尚不清楚你想要什麼?如果你想使之停止總結,總結一些數字,當它到達1002,您可以:
List<int> list = new List<int> { 4, 900, 500, 498, 4 };
var lst = list.Skip(2).Take(3);
int sum = 0;
foreach (int num in lst)
{
int sum2 = sum + num;
if (sum2 > 1002)
{
break;
}
sum = sum2;
}
Console.WriteLine(sum);
,或者你可以
List<int> list = new List<int> { 4, 900, 500, 498, 4 };
var lst = list.Skip(2).Take(3);
int sum = 0;
foreach (int num in lst)
{
sum += num;
if (sum >= 1002)
{
break;
}
}
Console.WriteLine(sum);
第一個將停止,如果通過添加一個數字它將超過1002,而第二個將停止後達到1002.
請注意,這兩個都不能直接在LINQ中直接完成。
然而,當我認爲OP需要的總和應該*精確* 1002時,這些方法都不會停止。 – HimBromBeere
@HimBromBeere如果他想解決[揹包問題](https://en.wikipedia.org/wiki/Knapsack_problem)那麼這是另一個問題:-) – xanatos
我認爲OP「Skip」和「Take」是一個嘗試解決問題。 P.S .:和一些隨機[揹包問題解決方案](http://stackoverflow.com/q/8125309/1997232)。 – Sinatr
爲什麼'Skip'和'Take'?不知道你在這裏試圖達到什麼。 –
'int sum = list.Where(x => x <1002).Sum();' – thumbmunkeys
在您的測試代碼中,沒有超過1002限制的值。那麼你想要達到的究竟是什麼? – HimBromBeere