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.
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.
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]
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); }
{ 5, -1, 4, 2, 0 }, 19
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!