Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: fla2727 en 15 Noviembre 2012, 16:02 pm



Título: Ayuda entender Divide y Venceras
Publicado por: fla2727 en 15 Noviembre 2012, 16:02 pm
Buenas, nos han explicado en programacion (en C) la tecnica divide y venceras, pero no me ha quedado claro como se haria este ejemplo, a la hora de combinar soluciones. A ver si alguien podría explicarmelo.

Ejemplo: Un algoritmo que busque la posición de un elemento, p, entre dos posiciones i,j de un vector, v, no ordenado. En caso de que exista devolverá la posición del elemento, en caso contrario devolverá -1. Para resolver el problema mediante recursividad, considere en dividir el problema en dos partes del mismo tamaño.

Mi solucion propuesta:

int encuentraPosicion2(int v[], int p, int i, int j){
   int r = -1;
   int m = (i+j)/2;
   if(i==j && p==v){
      r=i;
   }else if(p==v[m]){
      r=m;
   }else{
      r=encuentraPosicion2(v, p, i, m);
      r=encuentraPosicion2(v, p, m, j);
   }
   return r;
}

Pero se ve que no, que no entendí bien la idea....Alguien que sepa ayudarme


Título: Re: Ayuda entender Divide y Venceras
Publicado por: fla2727 en 15 Noviembre 2012, 17:01 pm
Nadie?...


Título: Re: Ayuda entender Divide y Venceras
Publicado por: m0rf en 15 Noviembre 2012, 17:16 pm
Es una busqueda binaria?


Título: Re: Ayuda entender Divide y Venceras
Publicado por: fla2727 en 17 Noviembre 2012, 20:26 pm
No creo que sea busqueda binaria porque no está ordenado el array. Seguí pensando y se me ocurrio lo siguiente:

Código:
int max(int a, int b){
return (a>b)? a:b;
}


int encuentraPosicion2(int v[], int p, int i, int j){
int result = -1;
int m = (i+j)/2;
if(i==j && p==v[ i ]){
result=i;
}else if(p==v[m]){
result=m;
}else{
result=max(encuentraPosicion2(v, p, i, m),encuentraPosicion2(v, p, m, j));
}
return result;
}
pero sigue sin funcionar, alguna ayuda??


Título: Re: Ayuda entender Divide y Venceras
Publicado por: m0rf en 18 Noviembre 2012, 19:12 pm
Se más especifico la próxima vez, no me voy a poner a preguntar para ayudarte.

"Posteo un codigo, arreglamelo!"


Título: Re: Ayuda entender Divide y Venceras
Publicado por: fla2727 en 18 Noviembre 2012, 19:19 pm
Ya está solucionado. Gracias por participar ;)