C# Algo разделяет список целых чисел на три списка с аналогичной суммойC#

Место общения программистов C#
Ответить
Anonymous
 C# Algo разделяет список целых чисел на три списка с аналогичной суммой

Сообщение Anonymous »

Я сейчас работаю над алгоритмом, который разделяет список целых чисел, но я не могу понять, как это сделать. У меня есть список целых чисел, которые мне придется разделить на 3 списка, и сумма всех этих списков должна быть максимально аналогичной. Я начал с демонстрационного проекта с этим списком: < /p>

Код: Выделить всё

List numbers = new List { 1, 2, 3, 4, 5 };
< /code>
В этом случае результат должен быть: < /p>
list1 = {1,4};
list2 = {3,2};
list3 = {5};
< /code>
И вот мой код: < /p>
public static List ProvideLists(List originalList)
{
List result
= new List { new List(), new List(), new List() };
var listToParse = originalList;
while (listToParse.Count > 0)
{
var smalestList =
result.Aggregate((a, b) => a.Sum() < b.Sum() ? a : b);
var biggestList =
result.Aggregate((a, b) => a.Sum() > b.Sum() ? a : b);
var diffSmallBig = biggestList.Sum() - smalestList.Sum();
var closestNumber =
listToParse.OrderBy(x => Math.Abs(x - diffSmallBig)).First();
listToParse.Remove(closestNumber);
smalestList.Add(closestNumber);
}
return result;
}
< /code>
В настоящее время этот код возвращает: < /p>
list1 = {3};
list2 = {5,2};
list3 = {4,1};
Если у кого -то есть какая -то подсказка, чтобы помочь мне :)


Подробнее здесь: https://stackoverflow.com/questions/751 ... imilar-sum
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»