Jadual Kandungan
Mari kita fahami melalui contoh:-
Kami akan bermula dari kaedah utama()
Rumah Java javaTutorial Di Jawa, cari jumlah subarray maksimum subarray selepas membahagikan tatasusunan kepada subarray berdasarkan pertanyaan yang diberikan

Di Jawa, cari jumlah subarray maksimum subarray selepas membahagikan tatasusunan kepada subarray berdasarkan pertanyaan yang diberikan

Aug 29, 2023 am 11:21 AM
bawahan pembahagian tatasusunan Jumlah subarray maksimum

Di Jawa, cari jumlah subarray maksimum subarray selepas membahagikan tatasusunan kepada subarray berdasarkan pertanyaan yang diberikan

Kami mempunyai dua tatasusunan integer, satu dengan elemen yang dikira dan satu lagi dengan titik selisih yang diperlukan untuk memisahkan tatasusunan untuk menghasilkan subset, kami perlu mengira jumlah setiap subset dalam setiap pecahan dan mengembalikan subset maksimum

Mari kita fahami melalui contoh:-

Input− int arr[] = int arr[] = { 9, 4, 5, 6 , 7 } int splitPoints[] = { 0, 2, 3, 1 } ;

Output− Jumlah sub-array maksimum [22, 13, 9, 9] selepas setiap pemisahan Jumlah subset

Selepas pemisahan pertama → {9} dan {4,5,6,7} >> Jumlah sub-baris maksimum ialah - 22

Selepas pemisahan kedua strong> → {9}, { 4,5 } dan {6,7} >> Jumlah sub-baris maksimum ialah - 13

Selepas pembahagian ketiga →{ 9}, {4,5}, {6} dan {7} >> Subarray maksimum Jumlah tatasusunan ialah - 9

Selepas pemisahan keempat →{9}, {4}, {5}, {6 } dan {7} >> Jumlah subarray maksimum ialah- 9

Input−int arr[] = int arr[] = { 7, 8, 5, 9, 1 } int splitPoints[] = { 1, 2 , 0, 3 };

Output−Jumlah subarray maksimum selepas setiap pemisahan [15, 115, 10, 9]

Penjelasan−Di sini kita menguraikan tatasusunan mengikut titik pembahagiannya dan memperoleh subset maksimum selepas setiap pemisahan

Selepas pemisahan pertama → {7, 8} dan {5,9,1} >> Jumlah sub-array maksimum ialah 15

Selepas pemisahan kedua → {7,8}, {5} dan {9,1} >> Jumlah sub-tatasusunan maksimum ialah 15 115

Selepas bahagian ketiga →{7}, {8}, {5} dan {9,1} >> Maksimum jumlah sub-array ialah 10

Selepas pembahagian keempat →{7}, {8}, {5}, {9} dan {1} >> Jumlah sub-array maksimum ialah 9

Kaedah yang digunakan dalam atur cara berikut adalah seperti berikut-

Kami akan bermula dari kaedah utama()

  • Tatasusunan input bagi sebarang panjang tertentu, seperti arr[] dan splitPoints[]. Panjangnya dikira dan dihantar kepada kaedah dalam bentuk calculateSubsetSum(arr.length, splitPoints.length, splitPoints, arr).

    • Dalam kaedah calculateSubsetSum()
  • buat tatasusunan integer sebagai sum[] dan tetapkan sum[0] kepada arr[0].

    • Mulakan gelung FOR daripada i ke 1 sehingga panjang tatasusunan, dan tetapkan jumlah[i] kepada jumlah[i - 1] + arr[i] dan tetapkan temp[0] kepada subSet baharu(0, n - 1, jumlah[n - 1]).

    • Teruskan menambah t2.add(temp[0]) dan t1.add(0)

    • Mulakan gelung FOR dari i ke 0 sehingga panjang tatasusunan splitPoints. Di dalam gelung tetapkan CurrentSplitPoint kepada t1.floor(splitPoints[i]) dan alih keluar dari t2 ke t2.remove(temp[currentSplitPoint])

    • set end to temp[currentSplitPoint] .last and temp[currentSplitPoint] as new subSets (currentSplitPoint, splitPoints[i], sum[splitPoints[i]] - (currentSplitPoint == 0 ? 0 : sum[currentSplitPoint - 1]))

    • gunakan t2.add(temp[splitSplitPoint]litPoint]) dan templat [i] + 1] = subSet baharu(splitPoints[i] + 1, end, sum[end] - sum[splitPoints[i] add]])

    • guna t2.add(temp[splitPoints [i] + 1]), t1.add(currentSplitPoint) dan t1.add(splitPoints[i] + untuk menambah 1)

    • cetak nilai t2.first().

    • Buat subSet kelas dan isytiharkan pertama, terakhir dan nilai sebagai ahli datanya dan tentukan pembina lalai sebagai subSet(int f, int l, int v) dan tetapkan dahulu kepada f, terakhir Set kepada l dan nilai untuk v
  • Buat kelas sebagai utilitiComparator yang akan melaksanakan Comparator

  • Buat kaedah awam sebagai perbandingan dan semak jika s2.value tidak sama dengan s1.value dan kemudian kembalikan s2.value - s1.

    • Semak sama ada s1.first tidak sama dengan s2.first dan kembalikan s2.first - s1.first

    • p>

    • Contoh
    import java.io.IOException;
    import java.io.InputStream;
    import java.util.*;
    class utilityComparator implements Comparator<subSets>{
       public int compare(subSets s1, subSets s2){
          if(s2.value != s1.value){
             return s2.value - s1.value;
          }
          if(s1.first != s2.first){
             return s2.first - s1.first;
          }
          return 0;
       }
    }
    class subSets{
       int first;
       int last;
       int value;
       subSets(int f, int l, int v){
          first = f;
          last = l;
          value = v;
       }
    }
    public class testClass{
       static void calculateSubsetSum(int n, int k, int splitPoints[], int arr[]){
          int sum[] = new int[n];
          sum[0] = arr[0];
          for (int i = 1; i < n; i++){
             sum[i] = sum[i - 1] + arr[i];
          }
          TreeSet<Integer> t1 = new TreeSet<>();
          TreeSet<subSets> t2 = new TreeSet<>(new utilityComparator());
          subSets temp[] = new subSets[n];
          temp[0] = new subSets(0, n - 1, sum[n - 1]);
          t2.add(temp[0]);
          t1.add(0);
          System.out.println("Maximum subarray sum after each split");
          for (int i = 0; i < k; i++){
             int currentSplitPoint = t1.floor(splitPoints[i]);
             t2.remove(temp[currentSplitPoint]);
             int end = temp[currentSplitPoint].last;
             temp[currentSplitPoint] = new subSets(currentSplitPoint, splitPoints[i], sum[splitPoints[i]] - (currentSplitPoint == 0 ? 0 : sum[currentSplitPoint - 1]));
             t2.add(temp[currentSplitPoint]);
             temp[splitPoints[i] + 1] = new subSets(splitPoints[i] + 1, end, sum[end] -       sum[splitPoints[i]]);
             t2.add(temp[splitPoints[i] + 1]);
             t1.add(currentSplitPoint);
             t1.add(splitPoints[i] + 1);
             System.out.println(t2.first().value);
          }
       }
       public static void main(String[] args){
          int arr[] = { 2, 1, 6, 8, 5, 10, 21, 13};
          int splitPoints[] = { 3, 1, 2, 0, 4, 5 };
          calculateSubsetSum(arr.length, splitPoints.length, splitPoints, arr);
       }
    }
    Salin selepas log masuk
  • Output di atas
Jika kita akan menjalankan kod berikut di atas

Maximum subarray sum after each split
49
49
49
49
44
34
Salin selepas log masuk

Atas ialah kandungan terperinci Di Jawa, cari jumlah subarray maksimum subarray selepas membahagikan tatasusunan kepada subarray berdasarkan pertanyaan yang diberikan. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

AI Hentai Generator

AI Hentai Generator

Menjana ai hentai secara percuma.

Artikel Panas

R.E.P.O. Kristal tenaga dijelaskan dan apa yang mereka lakukan (kristal kuning)
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Tetapan grafik terbaik
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Cara Memperbaiki Audio Jika anda tidak dapat mendengar sesiapa
4 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Cara Membuka Segala -galanya Di Myrise
1 bulan yang lalu By 尊渡假赌尊渡假赌尊渡假赌

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Di Jawa, cari jumlah subarray maksimum subarray selepas membahagikan tatasusunan kepada subarray berdasarkan pertanyaan yang diberikan Di Jawa, cari jumlah subarray maksimum subarray selepas membahagikan tatasusunan kepada subarray berdasarkan pertanyaan yang diberikan Aug 29, 2023 am 11:21 AM

Kami mempunyai dua tatasusunan integer, satu dengan elemen yang dikira dan satu lagi dengan titik pisah yang diperlukan untuk memisahkan tatasusunan untuk menghasilkan subset, kita perlu mengira jumlah setiap subset dalam setiap pecahan dan mengembalikan subset maksimum Mari kita lihat contoh Pemahaman: - input −intarr[]=intarr[]={9,4,5,6,7}intsplitPoints[]={0,2,3,1}; 13,9,9] Penjelasan − Di sini kita menguraikan tatasusunan mengikut titik pecahannya dan mendapatkan subset maksimum selepas setiap pecahan dan selepas pecahan pertama → {9} dan {4,5,6,7 }>>Jumlah maksimum subarray ialah -22 selepas pemisahan kedua→{9},{4

Tulis kod menggunakan C++ untuk mencari bilangan subarray dengan nilai minimum dan maksimum yang sama Tulis kod menggunakan C++ untuk mencari bilangan subarray dengan nilai minimum dan maksimum yang sama Aug 25, 2023 pm 11:33 PM

Dalam artikel ini, kami akan menggunakan C++ untuk menyelesaikan masalah mencari bilangan subarray yang nilai maksimum dan minimumnya adalah sama. Berikut ialah contoh masalah −Input:array={2,3,6,6,2,4,4,4}Output:12Penjelasan:{2},{3},{6},{6}, {2 },{4},{4},{4},{6,6},{4,4},{4,4}dan{4,4,4}arethesubarraysyang boleh dibentuk denganmaksimumdanminimumelemensama.Input:array={3, 3, 1,5,

Ditulis dalam C++, cari bilangan subarray yang jumlahnya kurang daripada K Ditulis dalam C++, cari bilangan subarray yang jumlahnya kurang daripada K Sep 07, 2023 pm 03:25 PM

Dalam siaran ini, kita akan menemui bilangan subarray dengan jumlah kurang daripada K menggunakan C++. Dalam masalah ini, kita mempunyai array arr[] dan integer K. Sekarang kita perlu mencari subarray yang jumlahnya kurang daripada K. Berikut ialah contoh −Input:arr[]={1,11,2,3,15}K=10Output:4{1},{2},{3}dan{2,3} untuk mencari penyelesaian Sekarang kita Dua pendekatan yang berbeza akan digunakan untuk menyelesaikan masalah yang diberikan - kekerasan Dalam pendekatan ini kita akan mengulangi semua sub-tatasusunan dan mengira jumlahnya dan jika jumlahnya kurang daripada k kemudian bandingkan dengan k untuk meningkatkan Jawapan kita. Contoh#include<

Dalam C++, maksimumkan bilangan subarray dengan sifar XOR Dalam C++, maksimumkan bilangan subarray dengan sifar XOR Aug 28, 2023 pm 09:05 PM

Kami mendapat array Arr[] yang mengandungi nilai integer. Matlamatnya adalah untuk mencari bilangan maksimum subarray yang XORnya ialah 0. Bit mana-mana subarray boleh ditukar beberapa kali. Nota: -1

Tulis kod menggunakan C++ untuk mencari bilangan subarray dengan jumlah ganjil Tulis kod menggunakan C++ untuk mencari bilangan subarray dengan jumlah ganjil Sep 21, 2023 am 08:45 AM

Subarray ialah bahagian bersebelahan daripada tatasusunan. Sebagai contoh, kami mempertimbangkan tatasusunan [5,6,7,8], maka terdapat sepuluh subarray bukan kosong, seperti (5), (6), (7), (8), (5,6), (6, 7), (7,8), (5,6,7), (6,7,8) dan (5,6,7,8). Dalam panduan ini, kami akan menerangkan semua maklumat yang mungkin dalam C++ untuk mencari bilangan subarray dengan jumlah ganjil. Untuk mencari bilangan subarray bagi jumlah ganjil kita boleh menggunakan kaedah yang berbeza, jadi berikut ialah contoh mudah - Input:array={9,8,7,6,5}Output:9Penjelasan:Sumofsubarray-{9}= 9{7

Subarray terpanjang yang pembahagi sepunya terbesar adalah lebih besar daripada 1 Subarray terpanjang yang pembahagi sepunya terbesar adalah lebih besar daripada 1 Sep 18, 2023 pm 10:17 PM

Tatasusunan ialah koleksi data serupa yang disimpan di lokasi memori bersebelahan dengan cara yang bersebelahan. Dengan mentakrifkan nilai offset sebagai nilai asas khusus untuk pangkalan data, lebih mudah untuk menilai kedudukan khusus setiap elemen. Nilai asas untuk indeks tertentu itu ialah sifar, dan nilai offset ialah perbezaan antara dua indeks tertentu. Subarray ialah sebahagian daripada tatasusunan tertentu dan boleh ditakrifkan sebagai satu set pembolehubah, dilabelkan dengan berbilang nilai. Subarray terpanjang merujuk kepada tatasusunan di mana semua elemen dalam tatasusunan lebih besar daripada K. Di sini jumlah subarray jumlah maksimum ialah - kurang daripada atau sama dengan set data yang diberikan dalam set data yang diberikan. Untuk mencari panjang subarray terpanjang yang diberikan kurang daripada 1 dalam set data, kita hanya perlu mencari jumlah nombor 1 dalam subarray tertentu. NOTA: Kiraan hendaklah lebih besar daripada kiraan sifar. Pembahagi sepunya terbesar ialah fenomena matematik di mana I

Bagaimana untuk menggabungkan dan memisahkan tatasusunan PHP Bagaimana untuk menggabungkan dan memisahkan tatasusunan PHP Sep 05, 2023 am 08:47 AM

Tatasusunan PHP ialah struktur data yang sangat biasa digunakan, dan operasi penggabungan dan pemisahan tatasusunan sering terlibat dalam pembangunan. Artikel ini akan memperkenalkan cara menggunakan bahasa PHP untuk melaksanakan kedua-dua operasi ini, dan melampirkan contoh kod yang sepadan. 1. Cantumkan tatasusunan Operasi cantuman tatasusunan boleh dilaksanakan menggunakan fungsi array_merge(). Fungsi ini menerima berbilang tatasusunan sebagai argumen dan menggabungkannya menjadi tatasusunan baharu. Contoh kod: $array1=["apple","ba

Ditulis dalam C++, cari bilangan nombor perdana dalam subarray Ditulis dalam C++, cari bilangan nombor perdana dalam subarray Sep 01, 2023 am 08:37 AM

Dalam artikel ini kita akan menerangkan kaedah untuk mencari bilangan nombor perdana dalam subarray. Kami mempunyai tatasusunan nombor positif arr[] dan pertanyaan q dengan dua integer mewakili julat kami {l,R} dan kami perlu mencari bilangan nombor perdana dalam julat yang diberikan. Di bawah ialah contoh untuk masalah yang diberikan - Input:arr[]={1,2,3,4,5,6},q=1,L=0,R=3Output:2Inthegivenrangetheprimesare{2,3}.Input: arr []={2,3,5,8,12,11},q=1,L=0,R=5Output:4Inthegivenrangetheprimesare{2,3,5

See all articles