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.
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:
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)); } }
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!