# L1 と L2 という 2 つのロッカーがあり、いくつかのコインが入っています。 L1 には A コインがあり、L2 には B コインがあります。引き出し金額を最大化するには、ロッカーからコインを取り出さなければなりません。各ロッカーからコインが取り出されるたびに、前の金額から1コインを引いた金額と交換されます。 L1 から A コインを取得すると、A-1 コインに置き換えられ、L2 から B コインを取得すると、B-1 コインに置き換えられます。課題は、2 つのステップで引き出し金額を最大化することです。これは、コインを 2 回しか引き出すことができないことを意味します。
入力 - L1 - 10、L2 - 11
出力 - 2ステップで引き出すことができる最大金額 - 21
説明 - 最初のステップでは、L2 から 11 枚のコインを取得します。L2 は 11-1=10 枚のコインに置き換えられます。
2 番目のステップでは、L1 と L2 の両方に 10 コインがあるため、どちらからでも取ることができ、最大の 11 10 = 21 コインがあります。入力 - L1-5、L2-5
出力 - 2ステップで引き出すことができる最大金額 - 10
説明 - 最初のステップでは、L1 から 5 枚のコインを取得します。L1 は 5-1=4 枚のコインに置き換えられます。
2 番目のステップでは、L1 には 4 枚のコインがあり、L2 には 5 枚のコインがあるため、L2 から 5 枚のコインを取り出し、5 5 = 10 枚のコインが最大値になります。 次のプログラムで使用されるメソッドは次のとおりです。k が小さい場合、最小の k 要素の合計が最小になります -
Code: #include <stdio.h> #include <math.h> // Function to return the maximum coins we can get int maxMoney(int A, int B){ //take coins int money=A>B?A:B; //refill the lockers with 1 less no.of coins if(money==A) A--; else B--; //withdraw again money+=A>B?A:B; return money; } // Driver code int main(){ int L1 = 8, L2 = 9; printf("Maximum money that can be withdrawn in two steps: %d" , maxMoney(L1, L2)); return 0; }
出力
以上がCでは、2段階で引き出すことができる最大金額の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。