Java
 Computer >> コンピューター >  >> プログラミング >> Java

Javaのすべての人Xの総利益を最大化する


5つの整数変数Num、P1、P2、profit_P1、profit_P2が与えられ、タスクは、[1、Num]の範囲内のすべての自然数から利益を最大化することです。ここでのアプローチは、正の数がP1で割り切れる場合、利益はprofit_P1で増加し、同様に、範囲内の数がP2で割り切れる場合、profit_P2の利益率が増加するというものです。また、正の整数からの利益は最大で1回追加できます。

例を挙げて理解しましょう:-

入力 − int num =4、P1 =6、P2 =2、profit_P1 =8、profit_P2 =2;

出力 −すべての人の総利益を最大化するX 4

説明 −ここでは、1から4([1、Num(4)])

の範囲の番号があります。

級数の数字はP1で割り切れません

1と2はP2で割り切れる

1と2はP2で除算され、2 * 2 = 4の利益が得られます。

入力 − num =3、P1 =1、P2 =2、profit_P1 =3、profit_P2 =4

出力 −すべての人の総利益を最大化するX 10

説明 − 1、2、および3はAで割り切れます。

2は、Bで割り切れる、指定された範囲内の唯一の数値です。

2はAとBの両方で割り切れます。

1と3をAで割ると、2 * 3=6の利益が得られます

2をBで割ると、1 * 4=4の利益が得られます

2は両方で割り切れますが、利益を最大化するために、AではなくBで除算されます。

以下のプログラムで使用されるアプローチは次のとおりです-

  • 正の数の範囲(Num)を含む6つの整数変数が与えられ、P1は最初の人を表し、P2は2番目の人を表し、profit_P1は人1の利益に似ています(つまり、与えられた数の範囲の数がP1で割り切れるprofit_P1rises)、同様にprofit_P2。

  • メイン関数内では、すべての計算の効用メソッドであるメソッド(profitMaximisation)が呼び出されます。

  • 関数内では、P1またはP2のいずれかのLCMの倍数である場合にのみ、P1とP2の両方で割り切れるすべての数値がわかります。また、より多くの利益をもたらす数値で除算する必要があります。

    >
  • したがって、ここでは、 profit_P1 *(num / P1)+ Profit_P2 *(num / P2)– min(profit_P1、profit_P2)*(num / lcm(P1、P2))によって計算されます。 。

  • 指定された数値のlcmを計算するためのCalculateGcd()メソッドが導入されています。

  • 最終的な出力はmainメソッドでキャプチャされ、出力としてユーザーに表示されます。

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

  1. JavaでJFrameの最大化ボタンを無効にするにはどうすればよいですか?

    JFrame javaxのクラスです。スイング パッケージであり、 java.awt.frameを拡張できます クラス。 トップレベルウィンドウです ボーダーとタイトルバー付き。 JFrame クラスには、カスタマイズに使用できる多くのメソッドがあります。 JFrameのサイズを設定した後 サイズを変更するには、カーソルを隅に置いてドラッグするか、右上隅の閉じる横にあるサイズ変更オプションを押すと、全画面のサイズに最大化されます。これは、サイズ変更がデフォルトでtrueに設定されているために発生します JFrameクラスの場合。 setResizable(false)と同じくらいf

  2. JavaでのJavaSwingのアーキテクチャを説明しますか?

    Java Swing は、グラフィカルユーザーインターフェイス( GUI )を提供するAPIのセットです。 )Javaプログラムの場合。 Java Swingは、 Abstract Windows Toolkと呼ばれる以前のAPIに基づいて開発されました。 それ(AWT)。 Java Swingは、AWTよりも豊富で洗練されたGUIコンポーネントを提供します。 GUIコンポーネントは、単純なレベルから複雑なまでさまざまです。 ツリー およびテーブル 。 Java Swingは、プラグ可能なルックアンドフィールを提供します 基盤となるプラットフォームから独立したJavaプログラムのルックアンド