Maison  >  Article  >  développement back-end  >  Programme C++ : rechercher le tableau après avoir supprimé la valeur maximale Programme C++ pour rechercher un tableau après avoir supprimé la valeur maximale

Programme C++ : rechercher le tableau après avoir supprimé la valeur maximale Programme C++ pour rechercher un tableau après avoir supprimé la valeur maximale

WBOY
WBOYavant
2023-09-04 20:01:02538parcourir

C++程序:在删除最大值后找到数组

C++程序用于在删除最大值后找到数组

Supposons que nous ayons un tableau A contenant n éléments et une autre valeur k. Nous voulons effectuer k opérations. Une opération a la forme :

  • Supposons que d est la valeur maximale du tableau

  • Pour chaque index i de 1 à n, remplacez A[i] par d - A[i]

Nous Le la séquence finale doit être trouvée.

Catégorie de questions

Un tableau dans une structure de données est un ensemble fini d'éléments d'un type spécifique. Les tableaux sont utilisés comme Stockez les éléments du même type dans des emplacements mémoire consécutifs. Un tableau est alloué Un nom spécifique et désigné par ce nom dans divers langages de programmation Pour accéder à un élément d'un tableau, un index est requis. Nous utilisons le terme « nom[i] » pour Accédez à un élément spécifique à la position « i » dans le tableau « nom ». diverses structures de données Par exemple, les piles, les files d'attente, les tas et les files d'attente prioritaires peuvent tous être implémentés à l'aide de tableaux. Fonctionne sur Les tableaux incluent les opérations d'insertion, de suppression, de mise à jour, de parcours, de recherche et de tri. accéder Les liens ci-dessous sont destinés à une lecture plus approfondie.

https://www.tutorialspoint.com/data_structures_algorithms/array_data_structure.htm

Donc, si l'entrée de notre problème est A = [5, -1, 4, 2, 0] ; sera est [0, 6, 1, 3, 5] car d est 5.

Étapes

Pour résoudre ce problème, nous suivrons les étapes suivantes :

n := size of A
m := -inf
t := -inf
for initialize i := 0, when i < n, update (increase i by 1), do:
   m := maximum of m and A[i]
for initialize i := 0, when i < n, update (increase i by 1), do:
   A[i] := m - A[i]
   t := maximum of t and A[i]
if k mod 2 is same as 1, then:
   for initialize i := 0, when i < n, update (increase i by 1), do:
      print A[i]
   Otherwise
      for initialize i := 0, when i < n, update (increase i by 1), do:
         A[i] := t - A[i]
         print A[i]

Exemple

Voyons l'implémentation suivante pour une meilleure compréhension −

#include <bits/stdc++.h>
using namespace std;
void solve(vector<int> A, int k){
   int n = A.size();
   int m = -999;
   int t = -999;
   for (int i = 0; i < n; i++)
      m = max(m, A[i]);
   for (int i = 0; i < n; i++)
      A[i] = m - A[i], t = max(t, A[i]);
   if (k % 2 == 1)
      for (int i = 0; i < n; i++)
         cout << A[i] << ", ";
   else
      for (int i = 0; i < n; i++)
         A[i] = t - A[i], cout << A[i] << ", ";
}
int main(){
   vector<int> A = { 5, -1, 4, 2, 0 };
   int k = 19;
   solve(A, k);
}

Input

{ 5, -1, 4, 2, 0 }, 19

Output

0, 6, 1, 3, 5,

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:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer