Wir haben zwei Schließfächer namens L1 und L2, in denen sich einige Münzen befinden. L1 hat A-Münzen und L2 hat B-Münzen. Wir müssen Münzen aus dem Schließfach entfernen, um den entnommenen Betrag zu maximieren. Jedes Mal, wenn eine Münze aus einem Schließfach entnommen wird, wird sie durch den vorherigen Betrag minus 1 Münze ersetzt. Wenn wir A-Münzen von L1 nehmen, werden sie durch A-1-Münzen ersetzt, und wenn wir B-Münzen von L2 nehmen, werden sie durch B-1-Münzen ersetzt. Die Aufgabe besteht darin, den abgehobenen Betrag in zwei Schritten zu maximieren. Das bedeutet, dass die Münze nur zweimal abgehoben werden kann.
Eingabe - L1 - 10, L2 - 11
Ausgabe - Maximaler Betrag, der in zwei Schritten entnommen werden kann - 21
Erklärung - Im ersten Schritt entnehmen wir 11 aus L2-Münzen, L2 wird durch 11-1=10 Münzen ersetzt.
Im zweiten Schritt haben sowohl L1 als auch L2 10 Münzen, es kann also von beiden genommen werden, wir haben 11+10=21 Münzen, was das Maximum ist.
Eingabe - L1-5, L2-5
Ausgabe - Der maximale Betrag, der in zwei Schritten abgehoben werden kann - 10
Erklärung - Im ersten Schritt ziehen wir 5 von L1-Münzen ab, L1 wird durch 5-1=4 Münzen ersetzt.
Im zweiten Schritt hat L1 4 Münzen und L2 hat 5 Münzen, also nehmen wir 5 Münzen von L2 und haben 5+5=10 Münzen, was das Maximum ist.
Wir haben zwei ganzzahlige Schließfächer L1 und L2, die einige Münzen enthalten.
Die Funktion maxMoney(int A, int B) verwendet die Anzahl der Münzen im Schließfach als Eingabe.
In der Funktion maxMoney() verwenden wir die Variable „money“, um den Maximalbetrag zu speichern.
Zunächst ergibt sich der Wert des Geldes aus dem größeren Wert von A oder B. (Geld=A>B?A:B)
Vergleichen Sie den Geldwert mit A oder B, um festzustellen, aus welchem Behälter die Münze entfernt wurde.
Ersetzen Sie nun den Behälter durch den vorherigen Betrag minus 1 Münze. (A-- oder B--)
Addieren Sie den Geldwert erneut zum größeren Wert von A oder B. (Geld+=A>B?A:B)
Wenn k klein ist, ist die Summe der kleinsten k Elemente die kleinste -Speicher abs((Summe des gesamten Arrays) - (die Summe der kleinsten k Elemente ) in D1 Zweimal die Summe )). Zweimal, weil die Array-Summe auch diese Elemente enthält.
Wenn k größer ist, ist die Summe der größten k Elemente die größte –
Speichern Sie abs in D2 ((Summe des gesamten Arrays) – (doppelt die Summe der größten k Elemente) ist Twice die Array-Summe enthält auch diese Elemente.
Vergleichen Sie D1 mit D2 und speichern Sie den Maximalwert in maxD.
MaxD als Ergebnis zurückgeben.
Live-Demo
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; }
Wenn wir den obigen Code ausführen, wird die folgende Ausgabe generiert: -
Maximum money that can be withdrawn in two steps: 17
Das obige ist der detaillierte Inhalt vonIn C der maximale Betrag, der in zwei Schritten abgehoben werden kann. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!