Maison > développement back-end > C++ > Opérations sur les tableaux et sommes en utilisant C/C++

Opérations sur les tableaux et sommes en utilisant C/C++

PHPz
Libérer: 2023-09-02 22:29:06
avant
1410 Les gens l'ont consulté

Opérations sur les tableaux et sommes en utilisant C/C++

Ici, nous verrons un problème, en supposant qu'un tableau soit donné. Il y a n éléments. Une autre valeur S est également donnée. Nous devons trouver un élément K dans le tableau tel que si tous les éléments supérieurs à K sont égaux à K, alors la somme de tous les éléments du tableau final est égale à S. Si ce n’est pas possible, alors -1 est renvoyé.

Supposons que les éléments soient {12, 6, 3, 7, 8} et que la valeur de la somme soit 15, alors la sortie est 3. Le tableau final est {3, 3, 3, 3, 3} et la somme des éléments du tableau est S = 15

Algorithm

getVal(arr, n, S)

Begin
   sort arr as increasing order
   sum := 0
   for i in range 0 to n-1, do
      if sum + (arr[i] * (n - i)) is same as S, then
         return arr[i]
      end if
      sum := sum + arr[i]
   done
   return -1
End
Copier après la connexion

Example

#include <iostream>
#include <algorithm>
using namespace std;
int getVal(int arr[], int n, int S) {
   sort(arr, arr + n);
   int sum = 0;
   for (int i = 0; i < n; i++) {
      if (sum + (arr[i] * (n - i)) == S) //if current value is satisfying, then return arr[i]
         return arr[i];
      sum += arr[i];
   }
   return -1;
}
int main() {
   int S = 15;
   int arr[] = { 12, 3, 6, 7, 8 };
   int n = sizeof(arr) / sizeof(arr[0]);
   cout << getVal(arr, n, S);
}
Copier après la connexion

Sortie

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