C# でショッピング カートがあるサイトを実装しています。
データベースにこれらの製品があるとしましょう
製品 A の価格 50
製品 B の価格 50
製品 C の価格 50
製品 D の価格 50
ユーザーはこれらの製品をカートに追加できます。
現在、オファーが実行されています。ユーザーは、製品 A または製品 B を 3 個購入できます (これらの任意の組み合わせ - 例: 製品 A の 2 個と製品 B の 1 個、または製品 A の 3 個すべて)。
(つまり、この例では、彼が 3 個購入した場合、100 を支払う必要があり、4 個購入した場合は 150 を支払う必要があり、5 個購入した場合は 200 を支払う必要があり、6 個購入した場合も 200 を支払う必要があります)
これを実装するアルゴリズム\疑似コードを取得するにはどうすればよいですか?
人間の問題は、製品を任意の順序で追加できることです。たとえば、製品は
、A、A、A、
または
2A、B
、または
A、C、D、B、A、
または
A、C、C、A の順序で追加されます。
2A は、1 回のアクションで 2 個の製品 A を追加したことを意味します。(最後の場合、彼はその申し出を利用しません)
これを解決する最も簡単な方法を教えてください。そのようなことが解決されているコードを誰かが指摘できますか