Heim  >  Artikel  >  Backend-Entwicklung  >  In C der maximale Betrag, der in zwei Schritten abgehoben werden kann

In C der maximale Betrag, der in zwei Schritten abgehoben werden kann

WBOY
WBOYnach vorne
2023-09-22 08:05:171346Durchsuche

In C der maximale Betrag, der in zwei Schritten abgehoben werden kann

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.

Die vom folgenden Programm verwendete Methode ist wie folgt:

  • 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.

Beispiel

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;
}

Ausgabe

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!

Stellungnahme:
Dieser Artikel ist reproduziert unter:tutorialspoint.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen
Vorheriger Artikel:Ein C/C++-Zeigerrätsel?Nächster Artikel:Ein C/C++-Zeigerrätsel?