


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.
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 connexionOutput
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
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!

Outils d'IA chauds

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

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

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

AI Hentai Generator
Générez AI Hentai gratuitement.

Article chaud

Outils chauds

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

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

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

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,

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<

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

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

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

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

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
