2009-01-23 11 views
0

J'ai un scénario où je dois générer toutes les frappes possibles en utilisant les chiffres 2 à 9. Les frappes possibles devraient générer 2-git, 3 chiffres, etc. jusqu'à 32 chiffres chiffres. Quelqu'un peut-il me dire quelle est la meilleure façon de résoudre ce problème.génération de frappe

Merci, PDIT

Répondre

0

Vous regardez un peu de calcul vers l'extrémité supérieure de cette. Une façon possible de le faire serait d'avoir un tableau comme un espace réservé pour votre séquence de chiffres, incrémenter l'indice le plus élevé ou le plus bas, vérifier s'il déborde, puis le "porter" à l'index suivant et faire que jusqu'à ce que vous débordez l'empoisonnement "à l'autre bout". Commencez avec le tableau rempli de 2.

6

Commencez par une analyse simple pour envisager la faisabilité. Un chiffre a 8 valeurs possibles. Deux chiffres ont 8 x 8. Etc. Maintenant, prenez votre calculatrice et de calculer 8^32.

+0

ouais, je sais..mais j'ai besoin de le faire même si cela fonctionne pendant des jours .. :( –

+1

http://www.google.com/search?q=8+%5E+32+%2A+ nanosecondes + en + ans –

+0

@Pete Kirkham, cool, je ne savais pas que vous pouvez utiliser Google comme une calculatrice. – quinmars

0

Je prendrais une approche récursive simple, ici avec des caractères, mais vous pouvez construire vos numéros en utilisant d'autres moyens aussi ..

dans C:

#include <stdio.h> 
void keystrokes(int x, int lo, int hi, char array[]) { 
    int i; 
    if (x > hi) 
    return; 
    if (x >= lo) { 
    array[x] = 0; 
    printf ("%s\n", array); 
    } 
    for (i = 2; i < 10; i++) { 
    array[x] = i+'0'; 
    keystrokes (x+1, lo, hi, array); 
    } 
} 
int main(void) 
{ 
    char array[33]; 
    keystrokes(0, 2, 32, array); 

    return 0; 
} 

il peut être optimisé un peu (par exemple, pour tous les numéros à 32 chiffres, il va encore faire 10 appels récursifs supplémentaires), mais il va encore prendre une éternité pour calculer toutes les combinaisons possibles.