Ver Mensaje Individual
  #104 (permalink)  
Antiguo 11/12/2014, 06:11
Avatar de leosansan
leosansan
 
Fecha de Ingreso: mayo-2012
Ubicación: GRAN CANARIA
Mensajes: 194
Antigüedad: 12 años, 5 meses
Puntos: 49
Respuesta: Petando la pila. Problemas y retos usando recursividad.

Cita:
Iniciado por eferion Ver Mensaje
Otra posible solución al problema de los vampiros.

Visto que mi planteamiento inicial de hacer permutaciones era demasiado lento he cambiado el punto de vista.

Al final, visto lo visto, se parece un poco al resto de soluciones. En mi caso, para llevar el conteo de los dígitos compongo una máscara que me permite saber si los números comparten el mismo grupo de dígitos.


Me has ganado por un cuerpo de ventaja,. Justamente estaba en ello.

Dejo la función que tenía preparada, pero reconozco que te me has adelantado:

Código C++:
Ver original
  1. int SumaDigitos( int num , int suma ) {
  2.   const int binario [] = {(int)1e0, (int)1e1, (int)1e2,
  3.                           (int)1e3, (int)1e4, (int)1e5,
  4.                           (int)1e6, (int)1e7, (int)1e8,
  5.                           (int)1e9 };
  6.  if ( num ) { suma += (num % 10) * binario [num % 10]  ; return SumaDigitos ( num / 10 , suma ) ; }
  7.   else return suma ;
  8. }

Enhorabuena, fenómeno.

¡¡¡Saluditos!!!