Maison  >  Article  >  Java  >  En Java, maximiser le profit total de tous X

En Java, maximiser le profit total de tous X

王林
王林avant
2023-09-20 13:01:021258parcourir

En Java, maximiser le profit total de tous X

Nous avons 5 variables entières Num, P1, P2, profit_P1, profit_P2, et la tâche est de maximiser le profit et de choisir parmi tous les nombres naturels de la plage [1, Num]. L'approche ici est que si un nombre positif est divisible par P1, le profit est augmenté de profit_P1, de même, si un nombre de la plage est divisible par P2, le profit est augmenté de profit_P2. De plus, les bénéfices des entiers positifs ne peuvent être ajoutés qu’une seule fois.

Comprenons à travers des exemples :

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

Output - Maximiser le profit total X pour les 4

 ;

Explication - La plage de nombres ici est de 1 à 4 ([1, Num(4)])

Aucun nombre de la série n'est divisible par P1

1 et 2 sont divisibles par P2

1 et 2 Divisible par P2, nous obtenons un profit 2 * 2 = 4

Input - num = 3, P1 = 1, P2 = 2, profit_P1 = 3, profit_P2 = 4

Output - Maximiser le profit total de chacun

2 est le seul nombre de la plage donnée qui est divisible par B. 2 est divisible par A et B.

1 et 3 sont divisibles par A, ce qui donne un profit 2 * 3 = 6

2 peut être divisible par B, ce qui donne un profit 1 * 4 = 4

2 peut être divisible par A et B, mais pour maximiser le profit, il est-ce que B est divisible et non A.

La méthode utilisée dans le programme ci-dessous est la suivante -

Nous avons 6 variables entières, dont une plage positive (Num), P1 représente la première personne, P2 représente la deuxième personne, profit_P1 représente le profit de la première personne (c'est-à-dire que profit_P1 augmente si un nombre dans la plage de nombres donnée est divisible par P1), et de même profit_P2.

  • Une méthode (profitMaximisation) est appelée dans la fonction principale, qui est une méthode utilitaire pour tous les calculs.

  • Vous pouvez voir à l'intérieur de la fonction que seulement si le nombre est un multiple du plus petit commun multiple de P1 ou P2, il peut être divisible par P1 et P2 en même temps. De plus, il doit être divisé par un nombre qui génère plus de profit.

  • Donc, la méthode de calcul ici est

    profit_P1 * (num / P1) + profit_P2 * (num / P2) - min(profit_P1, profit_P2) * (num / lcm(P1, P2))
  • .
  • Introduit une méthode CalculateGcd() pour calculer le plus petit commun multiple d'un nombre donné.

  • Le résultat final est capturé dans la méthode principale et affiché à l'utilisateur.

  • Exemple

    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));
       }
    }
  • Output

Si nous exécutons le code ci-dessus, la sortie suivante sera générée

Maximize the total profit of all the persons X 12

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer