Programación de algoritmos: implementada en lenguaje c
Para resolver este tipo de problema, puede utilizar el algoritmo de retroceso. El código es el siguiente: #include?
#include?
# define?M?6//?Número de números candidatos
#define?N?5//?Número de dígitos después de la combinación
int? check(int?resultado[], ?int?i)
{
for?(int?j?=?0;?j?
si? (resultado[j]?==?i)
retorno?0;
retorno?1;
}
int? lista(int?números[],?int?l,?int?resultado[],?int?count)
{
si? (l?>=?N) ?{
//?Combina los dígitos en un solo número
int?num?=?0;
for? (int?i?=?0 ;?i?
num?=?num?*?10?+?números[resultado[i]]; p>
} p>
//?Determinar si este número es divisible por ?75?
if?(num?%?75?==?0)?{
printf( "%d\n",?num);
count++;
}
return?count;
}
¿para?(int?i?=?0;?i?
si?(!check(resultado, ?i))?{ p>
continuar;
}
resultado[l]?=?i;
contar?=? lista(números,?l?+ ?1,?resultado,?recuento);
resultado[l]?=?-1;
}
return?count;
}
int?main()?
{
int?números[M]?=?{ ?1,?2,?5 ,?7,?8,?9?};
int?resultado[N]?=?{?-1,?-1,?-1,? -1,?-1?} ;
int?count?=?list(números,?0,?resultado,?0);
printf("***Hay son %d\n",? recuento);
sistema("pausa");
retorno?0;
}
Resultado de ejecución: