Table des matières
Comprenons par exemple :-
Nous commencerons par la méthode main()
Si nous exécutons le code ci-dessus, il générera la sortie suivante
Maison Java javaDidacticiel En Java, recherchez la somme maximale des sous-tableaux après avoir divisé un tableau en sous-tableaux en fonction d'une requête donnée.

En Java, recherchez la somme maximale des sous-tableaux après avoir divisé un tableau en sous-tableaux en fonction d'une requête donnée.

Aug 29, 2023 am 11:21 AM
sous-tableau séparation du tableau Somme maximale du sous-tableau

En Java, recherchez la somme maximale des sous-tableaux après avoir divisé un tableau en sous-tableaux en fonction dune requête donnée.

Nous avons deux tableaux d'entiers, l'un avec les éléments calculés et l'autre avec les points de division nécessaires pour diviser le tableau afin de générer des sous-ensembles, nous devons calculer la somme de chaque sous-ensemble dans chaque division et renvoyer le sous-ensemble maximum

Comprenons par exemple :-

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

Sortie− La somme maximale du sous-tableau [22, 13, 9, 9] après chaque division Somme du sous-ensemble

Après la première division → {9} et {4,5,6,7} >> La somme maximale du sous-tableau est de - 22

Après la deuxième division strong> → {9}, { 4,5 } et {6,7} >> La somme maximale du sous-tableau est de - 13

Après la troisième division →{ 9}, {4,5}, {6} et {7} >> Le sous-tableau maximum La somme du tableau est - 9

Après la quatrième division →{9}, {4}, {5}, {6 } et {7} >> La somme maximale du sous-tableau est- 9

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

Sortie−La somme maximale du sous-tableau après chaque division [15, 115, 10, 9]

Explication−Ici, nous décomposons le tableau en fonction de ses points de division et obtenons la somme maximale du sous-ensemble après chaque division

Après la première division → {7, 8} et {5,9,1} >> La somme maximale du sous-tableau est de 15

Après la deuxième division → {7,8}, {5} et {9,1} >> La somme maximale des sous-tableaux est de 15 115

Après la troisième division →{7}, {8}, {5} et {9,1} >> Le maximum la somme du sous-tableau est de 10

Après la quatrième division →{7}, {8}, {5}, {9} et {1} >> La somme maximale du sous-tableau est de 9

La méthode utilisée dans le Le programme suivant est le suivant : 

Nous commencerons par la méthode main()

  • Tableaux d'entrée de n'importe quelle longueur donnée, tels que arr[] et splitPoints[]. Leurs longueurs sont calculées et transmises à la méthode sous la forme calculateSubsetSum(arr.length, splitPoints.length, splitPoints, arr).

    • Dans la méthode calculateSubsetSum()
  • créez un tableau d'entiers sous la forme sum[] et définissez sum[0] sur arr[0].

    • Démarrez la boucle FOR de i à 1 jusqu'à la longueur du tableau, et définissez sum[i] sur sum[i - 1] + arr[i] et définissez temp[0] sur new subSets(0, n - 1, somme[n - 1]).

    • Continuez à ajouter t2.add(temp[0]) et t1.add(0)

    • Démarrez la boucle FOR de i à 0 jusqu'à la longueur du tableau splitPoints. À l'intérieur de la boucle, définissez currentSplitPoint sur t1.floor(splitPoints[i]) et supprimez de t2 à t2.remove(temp[currentSplitPoint])

    • set end sur temp[currentSplitPoint] .last et temp[currentSplitPoint] en tant que nouveaux sous-ensembles (currentSplitPoint, splitPoints[i], sum[splitPoints[i]] - (currentSplitPoint == 0 ? 0 : sum[currentSplitPoint - 1]))

    • utilisez t2.add(temp[currentSplitPoint]) et temp[splitPoints [i] + 1] = nouveaux sous-ensembles (splitPoints[i] + 1, fin, somme[end] - somme[splitPoints[i] add]])

    • utilisez t2.add(temp[splitPoints [i] + 1]), t1.add(currentSplitPoint) et t1.add(splitPoints[i] + to add 1)

    • Imprimez la valeur t2.first().

    • Créez des sous-ensembles de classe et déclarez le premier, le dernier et la valeur comme membres de données et définissez le constructeur par défaut en tant que sous-ensembles (int f, int l, int v) et définissez le premier sur f, le dernier Set sur l et la valeur to v
  • Créez une classe en tant qu'utilitaireComparator qui implémentera Comparator

  • Créez une méthode publique comme comparaison et vérifiez si s2.value n'est pas égal à s1.value, puis renvoyez la valeur s2 - s1.value.

    • Vérifiez si s1.first n'est pas égal à s2.first et renvoyez s2.first - s1.first

    • p>

    • Exemple
    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);
       }
    }
    Copier après la connexion
  • Output

Si nous exécutons le code ci-dessus, il générera la sortie suivante

Maximum subarray sum after each split
49
49
49
49
44
34
Copier après la connexion

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 de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

AI Hentai Generator

AI Hentai Generator

Générez AI Hentai gratuitement.

Article chaud

R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
4 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Meilleurs paramètres graphiques
4 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Comment réparer l'audio si vous n'entendez personne
4 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Comment déverrouiller tout dans Myrise
1 Il y a quelques mois By 尊渡假赌尊渡假赌尊渡假赌

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

En Java, recherchez la somme maximale des sous-tableaux après avoir divisé un tableau en sous-tableaux en fonction d'une requête donnée. En Java, recherchez la somme maximale des sous-tableaux après avoir divisé un tableau en sous-tableaux en fonction d'une requête donnée. Aug 29, 2023 am 11:21 AM

Nous avons deux tableaux d'entiers, l'un avec les éléments calculés et l'autre avec les points de division nécessaires pour diviser le tableau afin de générer des sous-ensembles, nous devons calculer la somme de chaque sous-ensemble dans chaque division et renvoyer le sous-ensemble maximum. Passons en revue l'exemple Comprendre : - input −intarr[]=intarr[]={9,4,5,6,7}intsplitPoints[]={0,2,3,1} ; sortie−la somme maximale du sous-tableau après chaque division [ 22, 13,9,9] Explication - Ici, nous décomposons le tableau en fonction de ses points de division et obtenons le sous-ensemble maximum après chaque division et après la première division → {9} et {4,5,6,7 }>> La somme maximale des sous-tableaux est de -22 après la deuxième division →{9},{4

Écrivez un code en C++ pour trouver le nombre de sous-tableaux avec les mêmes valeurs minimales et maximales Écrivez un code en C++ pour trouver le nombre de sous-tableaux avec les mêmes valeurs minimales et maximales Aug 25, 2023 pm 11:33 PM

Dans cet article, nous utiliserons C++ pour résoudre le problème de trouver le nombre de sous-tableaux dont les valeurs maximales et minimales sont les mêmes. Voici un exemple du problème −Input:array={2,3,6,6,2,4,4,4}Output:12Explication :{2},{3},{6},{6}, {2 },{4},{4},{4},{6,6},{4,4},{4,4}et{4,4,4}sont les sous-tableaux qui peuvent être formés avec les mêmes éléments maximum et minimum. Entrée : tableau = {3, 3, 1,5,

Écrit en C++, trouvez le nombre de sous-tableaux dont la somme est inférieure à K Écrit en C++, trouvez le nombre de sous-tableaux dont la somme est inférieure à K Sep 07, 2023 pm 03:25 PM

Dans cet article, nous trouverons le nombre de sous-tableaux dont la somme est inférieure à K en utilisant C++. Dans ce problème, nous avons un tableau arr[] et un entier K. Nous devons maintenant trouver les sous-tableaux dont la somme est inférieure à K. Voici l'exemple −Input:arr[]={1,11,2,3,15}K=10Output:4{1},{2},{3}and{2,3} pour trouver la solution. Maintenant, nous Deux approches différentes seront utilisées pour résoudre le problème donné : la force brute. Dans cette approche, nous allons parcourir tous les sous-tableaux et calculer leur somme et si la somme est inférieure à k, comparer avec k pour augmenter notre réponse. Exemple#include<

En C++, maximiser le nombre de sous-tableaux avec zéro XOR En C++, maximiser le nombre de sous-tableaux avec zéro XOR Aug 28, 2023 pm 09:05 PM

Nous obtenons un tableau Arr[] contenant des valeurs entières. Le but est de trouver le nombre maximum de sous-tableaux dont le XOR est 0. Les bits de n'importe quel sous-tableau peuvent être échangés un nombre illimité de fois. Remarque : -1

Le sous-tableau le plus long dont le plus grand diviseur commun est supérieur à 1 Le sous-tableau le plus long dont le plus grand diviseur commun est supérieur à 1 Sep 18, 2023 pm 10:17 PM

Un tableau est une collection de données similaires stockées dans des emplacements mémoire adjacents de manière contiguë. En définissant la valeur de décalage comme valeur de base spécifique pour la base de données, il est plus facile d'évaluer la position spécifique de chaque élément. La valeur de base de cet index particulier est zéro et la valeur de décalage est la différence entre les deux indices particuliers. Un sous-tableau fait partie d'un tableau spécifique et peut être défini comme un ensemble de variables, étiquetées avec plusieurs valeurs. Le sous-tableau le plus long fait référence à un tableau dans lequel tous les éléments du tableau sont supérieurs à K. Ici, la somme du sous-tableau de somme maximale est inférieure ou égale à l'ensemble de données donné dans l'ensemble de données donné. Pour trouver la longueur du sous-tableau le plus long étant inférieur à 1 dans un ensemble de données, il nous suffit de trouver le nombre total de 1 dans un sous-tableau particulier. REMARQUE : Le nombre doit être supérieur au nombre de zéro. Le plus grand diviseur commun est un phénomène mathématique dans lequel je

Écrivez un code en C++ pour trouver le nombre de sous-tableaux avec des sommes impaires Écrivez un code en C++ pour trouver le nombre de sous-tableaux avec des sommes impaires Sep 21, 2023 am 08:45 AM

Un sous-tableau est une partie contiguë d'un tableau. Par exemple, nous considérons un tableau [5,6,7,8], alors il y a dix sous-tableaux non vides, tels que (5), (6), (7), (8), (5,6), (6, 7), (7,8), (5,6,7), (6,7,8) et (5,6,7,8). Dans ce guide, nous expliquerons toutes les informations possibles en C++ pour trouver le nombre de sous-tableaux avec des sommes impaires. Pour trouver le nombre de sous-tableaux de sommes impaires, nous pouvons utiliser différentes méthodes, voici donc un exemple simple - Input:array={9,8,7,6,5}Output:9Explanation:Sumofsubarray-{9}= 9{7

Comment fusionner et diviser des tableaux PHP Comment fusionner et diviser des tableaux PHP Sep 05, 2023 am 08:47 AM

Les tableaux PHP sont une structure de données très couramment utilisée, et les opérations de fusion et de division de tableaux sont souvent impliquées dans le développement. Cet article présentera comment utiliser le langage PHP pour implémenter ces deux opérations et joindra des exemples de code correspondants. 1. Fusionner des tableaux L'opération de fusion de tableaux peut être implémentée à l'aide de la fonction array_merge(). Cette fonction accepte plusieurs tableaux comme arguments et les fusionne dans un nouveau tableau. Exemple de code : $array1=["apple","ba

Écrit en C++, trouvez le nombre de nombres premiers dans un sous-tableau Écrit en C++, trouvez le nombre de nombres premiers dans un sous-tableau Sep 01, 2023 am 08:37 AM

Dans cet article, nous décrirons une méthode pour trouver le nombre de nombres premiers dans un sous-tableau. Nous avons un tableau de nombres positifs arr[] et q requêtes avec deux entiers représentant notre plage {l,R} et nous devons trouver le nombre de nombres premiers dans la plage donnée. Vous trouverez ci-dessous un exemple pour le problème donné : 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=5Sortie : 4Dans la plage donnée, les nombres premiers sont{2,3,5

See all articles