Advertisement
JosepRivaille

PRO2 Parcial Teoria 11/10

Nov 6th, 2015
295
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.00 KB | None | 0 0
  1. /* PROBLEMA 1: PREFIX MAXIM DE SUMA ZERO */
  2.  
  3. int long_pref_sumax(const vector<int> &v)
  4. /* Pre: cert */
  5. /* Post: el resultat es la longitud del prefix mes llarg de v que suma zero */
  6. {
  7.   int i, j, suma;
  8.   i = j = suma = 0;
  9.   /* Inv: 0 <= i <= v.size(), posicio que consultem actualment
  10.    *      0 <= j <= v.size(), longitut prefix de v[0..i]
  11.    *      suma val la suma dels elements de v[0..i-1]
  12.    */
  13.   while (i < v.size()) {
  14.     suma += v[i];
  15.     ++i;
  16.     if (suma == 0) j = i;
  17.   }
  18.   /* A: i == v.size()
  19.    *    j es la longitud del prefix maxim de v
  20.    *    suma es la suma dels elements de v[0..v.size()-1]
  21.    */
  22.   return j;
  23. }
  24.  
  25.  
  26. /*****************************************************************************/
  27.  
  28.  
  29. /* PROBLEMA 2: ARBRE D'ALTURES */
  30.  
  31. int max_altura(const Arbre<int>& a1, const Arbre<int>& a2)
  32. /* Pre: cert */
  33. /* Post: retorna l'altura màxima de dos arbres a1 i a2 */
  34. {
  35.   if (a1.es_buit() && a2.es_buit()) return 0;
  36.   else if (a1.es_buit() && !a2.es_buit()) return a2.arrel();
  37.   else if (!a1.es_buit() && a2.es_buit()) return a1.arrel();
  38.   else {
  39.     int x = a1.arrel();
  40.     int y = a2.arrel();
  41.     if (x > y) return x;
  42.     else return y;
  43.   }
  44. }
  45.  
  46.  
  47. Arbre<int> arbre_alt(Arbre<int>& a)
  48. /* Pre: cert */
  49. /* Post: el resultat es un arbre ambn la mateixa forma que a, on cada element
  50.  *       es l'altura del subarbre d'a que te com a arrel el corresponent de
  51.  *       l'esmentat element
  52.  */
  53. {
  54.   Arbre<int> resultat;
  55.   Arbre<int> a1, a2;
  56.   if (!a.es_buit()){
  57.     a.fills(a1, a2);
  58.     if (!a1.es_buit() || !a2.es_buit()) {
  59.       a1 = arbre_alt(a1);
  60.       a2 = arbre_alt(a2);
  61.     }
  62.     resultat.plantar(max_altura(a1, a2), a1, a2);
  63.     /* HI: Si els fills d'un arbre a estan buits, significa que tenim un element que es una fulla,
  64.      *     que per definicio te altura 1 per tant el l'arbre d'altures li assignem el valor 1.
  65.      *     A cada crida recursiva descendim per l'arbre fins arribar a una fulla i poder aplicar HI
  66.      */
  67.   }
  68.   return resultat;
  69. }
  70.  
  71. //JosepRivaille
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement