Алгоритм «Купить 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
Ответить

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

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

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

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

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