Maison > développement back-end > C++ > Rechercher le tableau initial d'un tableau donné après une requête de somme de plage en C++

Rechercher le tableau initial d'un tableau donné après une requête de somme de plage en C++

PHPz
Libérer: 2023-09-17 17:09:02
avant
2752 Les gens l'ont consulté

在 C++ 中的范围求和查询后从给定数组中查找初始数组

Dans ce problème, nous obtenons un tableau res[] de taille N. Notre tâche est de trouver le tableau initial à partir d'un tableau donné après une requête de somme de plage.

Nous devons trouver le tableau de départ sur lequel le tableau rel[] sera renvoyé lors de l'exécution d'une requête [s, e, val].

Chaque requête [s, e, val] est résolue comme

s -> index de début

e -> index de fin

val -> mettre à jour chaque élément de s à e pour être ajouté à la valeur du tableau.

Prenons un exemple pour comprendre ce problème, la traduction de
Input : rel[] = {7, 4, 8}
Query[][] = {{1, 2, 1},
{0, 1, 3}}
Output : {4, 0, 7}
Copier après la connexion

Explication

est :

Explication

initialArray = {4, 0, 7}; query = {1, 2, 1}; finalArray = {4, 1, 8}
initialArray = {4, 1, 8}; query = {0, 1, 3}; finalArray = {7, 4, 8}
Copier après la connexion

Solution

La façon simple de résoudre le problème est de parcourir tout requêtes, pour tous La requête est résolue de la même manière que nous avons résolu le problème, puis renvoie le tableau trouvé à la fin. Ici, afin de trouver le tableau initial, nous devons l'opérer de la manière opposée, c'est-à-dire le soustraire du tableau donné.

Exemple

Exemple de programme pour illustrer le fonctionnement de notre solution

#include <iostream>
using namespace std;
void calcInitialArrayQueries(int arr[], int n, int query[][3], int q) {
   for (int i = 0; i < q; i++) {
      for (int j = query[i][0];j <= query[i][1]; j++) {
         arr[j] = arr[j] - query[i][2];
      }
   }
   for (int i = 0; i < n; i++)
      cout<<arr[i]<<" ";
}
int main() {
   int arr[] = { 5, 1, 8, 2, 9};
   int n = sizeof(arr) / sizeof(arr[0]);
   int query[][3] = { {0, 2, -2}, {1, 4, 3}};
   int q = sizeof(query) / sizeof(query[0]);
   cout<<"Initial array : "; calcInitialArrayQueries(arr, n, query, q);
   return 0;
}
Copier après la connexion

Sortie

Initial array : 7 0 7 -1 6
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!

source:tutorialspoint.com
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal