Suma alternada per sota de cada posició d’una pila

Implementeu una funció RECURSIVA que, donada una pila d’enters
[a₁, a₂, a₃, a₄, …, a_(n − 2), a_(n − 1), a_(n)], a on es representen
els elements de la pila començant per l’esquerra amb el fons de la pila
(a₁ és l’element del fons, a₂ és el següent des del fons, i així
successivament), retorna una pila de la mateixa mida amb aquest
contingut:
[a₁, a₂ − a₁, a₃ − a₂ + a₁, a₄ − a₃ + a₂ − a₁, …, a_(n) − a_(n − 1) + a_(n − 2) − ⋯].
En altres paraules, la nova pila té, a cada posició, la suma alternada
dels elements en la pila original que es troben des d’aquella posició
cap al fons, i començant amb signe positiu. Aquesta és la capcelera:

    // Pre: Sigui [a1, a2, a3, a4, ... a{n-2}, a{n-1}, an] el valor inicial rebut en el paràmetre s.
    // Post: Retorna la pila [a1, a2-a1, a3-a2+a1, a4-a3+a2-a1, ..., an-a{n-1}+a{n-2}-...]
    stack<int> alternatedSumBelow(stack<int> s);

Aquí tenim un exemple d’entrada i sortida de la funció, a on es mostren
els elements de les piles des del fons de la pila a l’esquerra fins al
top de la pila a la dreta:

    alternatedSumBelow([5,4,1,8,9,7]) = [5,-1,2,6,3,4]

Observació

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

Observació

La vostra funció i subfuncions que creeu han de treballar només amb
piles. Heu de trobar una solució RECURSIVA i eficient del problema.
Podeu crear funcions auxiliars per tal de millorar l’eficiència. En les
crides recursives, incloeu la hipòtesi d’inducció, és a dir una
explicació del que es cumpleix després de la crida, i també la funció de
fita/decreixement o una justificació de perquè la funció recursiva
acaba.

Una implementació no eficient que superi honestament els jocs de proves
públics us permetrà obtenir una nota raonable, però per a superar tots
els jocs de proves i obtenir la màxima nota haureu de pensar en una
manera de fer-ho eficient.

Avaluació sobre 10 punts:

- Solució lenta: 6 punts.

- Solució lenta + justificació: 7 punts.

- solució ràpida: 9 punts.

- solució ràpida + justificació: 10 punts.

Informació del problema

Autoria: PRO1

Generació: 2026-01-25T17:46:25.907Z

© Jutge.org, 2006–2026.
https://jutge.org
