Heim  >  Artikel  >  Java  >  Maximieren Sie in Java den Gesamtgewinn aller Menschen X

Maximieren Sie in Java den Gesamtgewinn aller Menschen X

王林
王林nach vorne
2023-09-20 13:01:021256Durchsuche

Maximieren Sie in Java den Gesamtgewinn aller Menschen X

Wir haben 5 ganzzahlige Variablen Num, P1, P2, profit_P1, profit_P2, und die Aufgabe besteht darin, den Gewinn zu maximieren und aus allen natürlichen Zahlen im Bereich [1, Num] auszuwählen. Der Ansatz hier ist, dass, wenn eine positive Zahl durch P1 teilbar ist, der Gewinn um Gewinn_P1 erhöht wird. Wenn eine Zahl im Bereich durch P2 teilbar ist, erhöht sich der Gewinn um Gewinn_P2. Darüber hinaus können Gewinne aus positiven ganzen Zahlen höchstens einmal addiert werden.

Lassen Sie uns anhand von Beispielen verstehen:

Input – int num = 4, P1 = 6, P2 = 2, profit_P1 = 8, profit_P2 = 2;

Output – Maximieren Sie den Gesamtgewinn X für alle 4

Erklärung – Der Zahlenbereich liegt hier zwischen 1 und 4 ([1, Num(4)])

Keine Zahl in der Reihe ist durch P1 teilbar

1 und 2 sind durch P2 teilbar

1 und 2 teilbar durch P2 erhalten wir Gewinn 2 * 2 = 4

Eingabe – Zahl = 3, P1 = 1, P2 = 2, Gewinn_P1 = 3, Gewinn_P2 = 4

Ausgabe – Maximieren Sie den Gesamtgewinn aller

2 ist die einzige Zahl im angegebenen Bereich, die durch B teilbar ist. 2 ist durch A und B teilbar.

1 und 3 sind durch A teilbar, was einen Gewinn von 2 * 3 = 6 ergibt.

2 kann durch B teilbar sein, was einen Gewinn von 1 * 4 = 4 ergibt.

2 kann durch A und B teilbar sein, aber um den Gewinn zu maximieren, ist es möglich ist B teilbar, nicht A.

Die im folgenden Programm verwendete Methode ist wie folgt:

Wir haben 6 ganzzahlige Variablen, einschließlich positivem Bereich (Num), P1 repräsentiert die erste Person, P2 repräsentiert die zweite Person, profit_P1 repräsentiert den Gewinn der ersten Person (d. h. Gewinn_P1 steigt, wenn eine Zahl im gegebenen Zahlenbereich durch P1 teilbar ist) und ebenso Gewinn_P2.

  • In der Hauptfunktion wird eine Methode (GewinnMaximierung) aufgerufen, die eine Hilfsmethode für alle Berechnungen ist.

  • Sie können in der Funktion sehen, dass die Zahl nur dann gleichzeitig durch P1 und P2 teilbar sein kann, wenn sie ein Vielfaches des kleinsten gemeinsamen Vielfachen von P1 oder P2 ist. Darüber hinaus sollte es durch eine Zahl geteilt werden, die mehr Gewinn bringt.

  • Die Berechnungsmethode hier ist also

    Gewinn_P1 * (Anzahl / P1) + Gewinn_P2 * (Anzahl / P2) - min(Gewinn_P1, Gewinn_P2) * (Anzahl / lcm(P1, P2))
  • .
  • Einführung einer Methode CalculateGcd() zur Berechnung des kleinsten gemeinsamen Vielfachen einer bestimmten Zahl.

  • Die endgültige Ausgabe wird in der Hauptmethode erfasst und dem Benutzer angezeigt.

  • Beispiel

    public class testClass{
       static int CalculateGcd(int n1, int n2){
          if (n2 == 0)
             return n1;
          return CalculateGcd(n2, n1 % n2);
       }
       static int profitMaximisation(int n, int a, int b, int x, int y){
          int result = x * (n / a);
          result += y * (n / b);
          result -= Math.min(x, y) * (n / ((a * b) / CalculateGcd(a, b)));
          return result;
       }
       public static void main(String[] args){
          int num = 6, P1 = 6, P2 = 2, profit_P1 = 8, profit_P2 = 2;
          System.out.println("Maximize the total profit of all the persons X "+profitMaximisation(num, P1, P2, profit_P1, profit_P2));
       }
    }
  • Ausgabe

Wenn wir den obigen Code ausführen, wird die folgende Ausgabe generiert

Maximize the total profit of all the persons X 12

Das obige ist der detaillierte Inhalt vonMaximieren Sie in Java den Gesamtgewinn aller Menschen X. 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