24/10/09 11:09
Premoli
ciao a tutti!!!
ho scritto questo codice:
che calcola tutte le disposizioni, funziona abbastanza bene, sicuramente si può fare di meglio, ma non è questo il punto, ora vorrei modificarlo per evitare che tra le combinazioni ci siano ripetizioni
ad esempio vorrei che la combinazione
1234 non fosse ripetuta due volte
e che combinazioni del tipo
1111 non venissero considerate
ma non ho niente in mente, voi avete qualche idea?
spero di essere stato chiaro, e in attesa di una vostra risposta vi ringrazio anticipatamente.
ho scritto questo codice:
#include <stdio.h> #include <stdlib.h> #include <string.h> int main() { int charset[]={1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20}; int n; int k, i, j, new_line=0, exit; FILE *fp; fp=fopen("comb.txt", "w"); printf("\nInserire il valore di k: "); scanf("%d", &k); int index[k]; n=20; i=0; memset(index, 0, k * sizeof(int)); for (;;) { exit = 1; for (i = 0; i < k; i ++) { fprintf(fp, "%d ", charset[index[i]]); printf("%d ", charset[index[i]]); if (index[i] < n - 1) exit = 0; } fprintf(fp, "%c", '\n'); printf("\n"); if (exit) { break; } ++ index[k - 1]; for (j = k - 1; j >= 1; j --) { if (index[j] >= n) { index[j] = 0; ++ index[j - 1]; } } } fclose(fp); return 0; }
che calcola tutte le disposizioni, funziona abbastanza bene, sicuramente si può fare di meglio, ma non è questo il punto, ora vorrei modificarlo per evitare che tra le combinazioni ci siano ripetizioni
ad esempio vorrei che la combinazione
1234 non fosse ripetuta due volte
e che combinazioni del tipo
1111 non venissero considerate
ma non ho niente in mente, voi avete qualche idea?
spero di essere stato chiaro, e in attesa di una vostra risposta vi ringrazio anticipatamente.
aaa