Está en la página 1de 2

ADDA/EDA Salud 3º Convocatoria - Diciembre Curso 2015/2016

Ejercicio 1 - Complejidad

Dado el siguiente código:

#include <stdio.h>
#include <stdlib.h>

int tab[10] = {2, 1, 1, 1, 1, 1, 1, 1, 1, 1};


const int TAM = 10;

int fortune(int, int *, int);


int max(int, int, int);

int fortune(int a, int* v, int b) {


int r = 0;
int n;
if (a>=b) {
r = b;
} else {
n = (a+b)/2;
r = fortune(a+1, v, b-1);
r = max(v[a],v[n],v[b-1])+r;
}
return r;
}

int max(int a, int b, int c) {


int r = a;
if (r<b)r = b;
if (r<c)r = c;
return r;
}

int main() {
int r;
r = fortune(0, tab, TAM);
printf("Resultado: %d", r);
}

SE PIDE:
a) Defina el tamaño n del problema para la llamada a la función fortune(0,tab,TAM).
b) Defina de forma recursiva la función T(n) para la función fortune(0,tab,TAM).
c) Calcular razonadamente la complejidad de la función T(n).
ADDA/EDA Salud 3º Convocatoria - Diciembre Curso 2015/2016

SOLUCIÓN

a) n=b-a+1
b) T ( n) = T (n − 2 ) + k
c)

CASO 1.2: a=1, c=1,b=2, d=0 [a=cb]

T (n) = O(n d +1c n ) = O(n 0+11n ) = O(n)

También podría gustarte