Llista equilibrada recursiva X12453


Statement
 

pdf   zip   main.cc

thehtml

Una llista d’enters és equilibrada si algun element de la llista compleix que la suma dels seus predecessors és igual a la suma dels seus successors.

Per exemple, la llista l=[−5, 6, 2, 3, 4, 0, 5, 1] és equilibrada ja que el 4 compleix que −5+6+2+3 = 0+5+1.

Implementa una funció RECURSIVA que donada un llista d’enters torna cert si la llista és equilibrada i fals altrament.

Interfície

La capçalera de la funció és la següent:

// Pre: cert
// Post: retorna cert si la llista té algun element que compleix que la suma
// dels seus predecessors és igual a la suma dels seus successors; fals altrament
bool llista_equilibrada(const list<int> &l)

Observació

La funció i subfuncions que creïs han de treballar només amb llistes (la classe list de la biblioteca STL). Has de trobar una solució RECURSIVA i eficient del problema. En particular, no hi hauria d’haver cap bucle en cap de les funcions que implementis. Si crees funcions auxiliars, afegeix-hi les corresponents Precondició (Pre) i Postcondició (Post). En les crides recursives inclou la hipòtesi d’inducció (HI) i la funció de fita (FF).

IMPORTANT: Només cal enviar el procediment demanat; el programa principal serà ignorat.

Public test cases
  • Input/Output

    llista_equilibrada([12, 4, 4, 4, 6, 7, 10]) → false
    llista_equilibrada([]) → false
    llista_equilibrada([1, 3, 2, 3, 2, 3, 2, 3, 2, 3]) → false
    llista_equilibrada([1, 3, 2, 5, 4, 7, 6, 9, 8, 11, 10, 13, 12, 15, 14]) → false
    llista_equilibrada([4, 2, 5, 3, 7, -1, 7, 6, 2]) → true
    llista_equilibrada([4, 2, 5, 3, 7, -1, 7, 6]) → false
    llista_equilibrada([1, 0, -1, 0, -1, 0, 1]) → true
    llista_equilibrada([1, 2]) → false
    llista_equilibrada([-1, 1, 2]) → true
  • Information
    Author
    Bernardino Casas
    Language
    Catalan
    Official solutions
    C++
    User solutions
    C++