1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53
|
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
void BruteForce (int Nbre);
int TailleMot = 0;
int TailleMotGenerer;
int TailleChaineSource;
char *ChaineSource = NULL;
char *Mot = NULL;
int main(void) {
int Total = 1;
int Compteur;
fscanf(stdin,"%d",&TailleChaineSource);
ChaineSource = (char*)malloc(TailleChaineSource+1);
fscanf(stdin,"%s",ChaineSource);
fscanf(stdin,"%d",&TailleMotGenerer);
Mot = (char*)malloc(TailleMotGenerer+1);
for (Compteur = 0;Compteur <TailleMotGenerer;Compteur++)
Total *= TailleChaineSource;
fprintf(stdout,"%d\n",Total);
BruteForce(TailleMotGenerer);
free(Mot);
free(ChaineSource);
return 0;
}
void BruteForce (int Nbre) {
int ParcouLettre;
if (Nbre == 0 ) {
Mot[TailleMot] = 0;
fprintf(stdout,"%s\n",Mot);
return;
}
for (ParcouLettre=0;ParcouLettre<TailleChaineSource;ParcouLettre++) {
if (strrchr(Mot,ChaineSource[ParcouLettre]) == NULL) {
Mot[TailleMot] = ChaineSource[ParcouLettre];
TailleMot++;
BruteForce(Nbre-1);
TailleMot--;
}
}
} |
Partager