Advertisement
JosepRivaille

X93239: Comptatge d'elements frontissa d'un vector

Nov 5th, 2015
699
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.14 KB | None | 0 0
  1. #include <iostream>
  2. #include <vector>
  3. using namespace std;
  4.  
  5.  
  6. int comptatge_frontisses(const vector<int> &v)
  7. /* Pre: cert */
  8. /* Post: el resultat es el nombre d'elements frontissa de v */
  9. {
  10.   int count, suma_left, suma_right;
  11.   count = suma_left = suma_right = 0;
  12.   for (int i = 1; i < v.size(); ++i) {
  13.     suma_right += v[i];
  14.   }
  15.   int i = 0;
  16.   /* Inv: 0 <= i <= v.size()-1, indica la posiciĆ³ del vector que visitem en cada moment
  17.    *      suma_left val la suma de tots els elements de v[0..i-1]
  18.    *      suma_right val la suma de tots els elements de v[i+1..v.size()-1]
  19.    *      count val el nombre de frontisses trobades al vector desde v[0] fins a v[i]
  20.    */
  21.   while (i < v.size()-1) {
  22.     if (v[i] == suma_right - suma_left) ++count;
  23.     ++i;
  24.     suma_right -= v[i];     // Descomptem element actual a la dreta
  25.     suma_left += v[i-1];    // Afegims element anterior a l'esquerra
  26.   }
  27.   /* A: count indica el nombre de frontisses trobades de v[0..v.size()-2]
  28.    *    suma_left val la suma dels elements de v[0..v.size()-2]
  29.    *    suma_right val 0
  30.    */
  31.   if (v[i] == suma_right - suma_left) ++count;
  32.   return count;
  33. }
  34.  
  35. //JosepRivaille
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement