Алгоритм «Купить X Платить за Y»C#

Место общения программистов C#
Anonymous
Алгоритм «Купить X Платить за Y»

Сообщение Anonymous »

Мне нужно написать алгоритм «Купи X, плати за Y».
На мою конечную точку приходит запрос — список статей

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

public class Article
{
public int Quantity { get; set; }
public decimal UnitPrice { get; set; }
}
Переменная payFor берется из базы данных и определяется идентификатором скидки на пакет.

Вот мой алгоритм, который я написал на данный момент

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

if (purchasedQuantity >= minPurchaseQuantity)
{
var c = 0;
foreach (var article in articlesForPackage.OrderByDescending(a => a.UnitPrice))
{
for (var i = 1; i  payFor)
{
c = 0;

result.Add(new Discount
{
Value = article.UnitPrice
});
}
}
}
}
К сожалению, этот алгоритм в некоторых случаях не работает.

Когда определена скидка на пакет, купите 3 и заплатить за 2 это работает, но если купить 3, заплатить за одного не получится.
Может кто-нибудь мне помочь?

Вот как должен работать алгоритм:
У нас есть 3 статьи
1 Арт1 - 20$
2 Арт2 - 30$3 Art3 - 40$

Если minPurchaseQuantity равно 3, а payFor равно 2, это означает, что стоимость Art1 должна быть добавлена ​​в список результатов (потому что это самый дешевый вариант). )

Если minPurchaseQuantity равно 3, а payFor равно 1, это означает, что стоимость Art2 и Art1 должна быть добавлена ​​в список результатов (теперь добавляется только Art2)>

Подробнее здесь: https://stackoverflow.com/questions/549 ... -algorithm

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