Advertisement
JosepRivaille

X87747: Comptatge d'elements solitaris d'un vector

Nov 5th, 2015
735
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.00 KB | None | 0 0
  1. #include <iostream>
  2. #include <vector>
  3. using namespace std;
  4.  
  5.  
  6. int solitaris (const vector<int> &v)
  7. /* Pre: v.size() > 0 */
  8. /* Post: el resultat es el nombre de solitaris a v */
  9. {
  10.   int n = 0;
  11.   bool b = true;    // Primer element sempre diferent anterior
  12.   int i = 1;
  13.   /* Inv: n son el nombre de solitaris en v[0..i-2]
  14.    *      1 <= i <= v.size(), i es la posicio següent del vector de l'element que
  15.    *                  considerem si es solitari o no
  16.    *      b indica si v[i-1] es diferent del seu element anterior: v[i-2]
  17.    */
  18.   while (i < v.size()) {
  19.     if (v[i] != v[i-1]) {
  20.       if (b) ++n;   // Si v[i] != v[i-1] i v[i-1] != v[i-2] tenim un solitari mes, v[i-1]
  21.       else b = true;
  22.     }
  23.     else b = false; // Modifiquem b si es necessari per indicar si v[i] != v[i-1]
  24.     ++i;
  25.   }
  26.   /* A: n val el nombre de solitaris en v[0..v.size()-2]
  27.    *    b indica si v.size()-1 es difrent de v.size()-2
  28.    */
  29.   if (b) ++n;       // Considerem ultim element sempre diferent següent
  30.   return n;
  31. }
  32.  
  33. //JosepRivaille
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement