Rumah  >  Artikel  >  Java  >  Di Jawa, maksimumkan jumlah keuntungan semua orang X

Di Jawa, maksimumkan jumlah keuntungan semua orang X

王林
王林ke hadapan
2023-09-20 13:01:021258semak imbas

Di Jawa, maksimumkan jumlah keuntungan semua orang X

Kami mempunyai 5 pembolehubah integer Num, P1, P2, profit_P1, profit_P2, dan tugasnya adalah untuk memaksimumkan keuntungan dan memilih daripada semua nombor asli dalam julat [1, Num]. Pendekatan di sini ialah jika nombor positif boleh dibahagikan dengan P1, keuntungan dinaikkan dengan keuntungan_P1, begitu juga, jika nombor dalam julat boleh dibahagikan dengan P2, keuntungan meningkat dengan keuntungan_P2. Tambahan pula, keuntungan daripada integer positif hanya boleh ditambah paling banyak sekali.

Mari kita fahami melalui contoh:

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

Penjelasan - Julat nombor di sini ialah 1 hingga 4 ([1, Num(4)])

Tiada nombor dalam siri yang boleh dibahagi dengan P1

1 dan 2 boleh dibahagi dengan P2

1 dan 2 Dibahagi dengan P2, kita mendapat untung 2 * 2 =

4

Input - nombor = 3, P1 = 1, P2 = 2, untung_P1 = 3, untung_P2 = 4

Keluaran Jumlah Maksimumkan semua orang

2 ialah satu-satunya nombor dalam julat yang diberikan yang boleh dibahagi dengan B.

2 boleh dibahagi dengan A dan B.

1 dan 3 boleh dibahagikan dengan A, memberi keuntungan 2 * 3 = 6

2 boleh dibahagikan dengan B, memberi keuntungan 1 * 4 = 4

2 boleh dibahagikan dengan A dan B, tetapi untuk memaksimumkan keuntungan, ia ialah B boleh bahagi bukan A.

Kaedah yang digunakan dalam program di bawah adalah seperti berikut -

Kami mempunyai 6 pembolehubah integer, termasuk julat positif (Num), P1 mewakili orang pertama, P2 mewakili orang kedua, keuntungan_P1 mewakili keuntungan orang pertama (iaitu keuntungan_P1 meningkat jika nombor dalam julat nombor tertentu boleh dibahagi dengan P1), dan begitu juga untung_P2.

Kaedah (profitMaximisation) dipanggil dalam fungsi utama, iaitu kaedah utiliti untuk semua pengiraan.

  • Anda boleh melihat di dalam fungsi bahawa hanya apabila nombor itu ialah gandaan bagi gandaan sepunya terkecil P1 atau P2, ia boleh dibahagikan dengan kedua-dua P1 dan P2 pada masa yang sama. Tambahan pula, ia harus dibahagikan dengan nombor yang memberikan lebih banyak keuntungan.

  • Jadi, kaedah pengiraan di sini ialah

    untung_P1 * (bilangan / P1) + untung_P2 * (bilangan / P2) - min(untung_P1, untung_P2) * (bilangan / lcm(P1, P2))

    .
  • Memperkenalkan kaedah CalculateGcd() untuk mengira gandaan sepunya terkecil bagi nombor tertentu.
  • Output akhir ditangkap dalam kaedah utama dan dipaparkan kepada pengguna.

  • Contoh

    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
  • Jika kita menjalankan kod di atas, output berikut akan dihasilkan

    Maximize the total profit of all the persons X 12

Atas ialah kandungan terperinci Di Jawa, maksimumkan jumlah keuntungan semua orang X. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Artikel ini dikembalikan pada:tutorialspoint.com. Jika ada pelanggaran, sila hubungi admin@php.cn Padam