void enumera(int i, int v[]) { int k; if (i==LEN) stampa_vettore(v); for (k=i; k<LEN; k++) { scambia (v, k, i); enumera(i+1, v); scambia (v, k, i); } }
int main() { int a, b; a = 1; b = 2; printf("Prima\n\ta = %d\n\tb = %d\n", a, b); scambia(&a, &b); printf("Dopo\n\ta = %d\n\tb = %d\n", a, b); }
void SSort(int a[],int n){ int i,j; for(i = 0;i<n-1;i++){ int iMin = i; for(j=i+1;j<n;j++){ if(a[j]<a[iMin])iMin=j; scambia(a,i,iMin); } } }
void selSort (int *v, int n) { int k, j, m; for (k=0; k<n-1; k++) { m=k; for (j=k+1; j<n; j++) if (v[j]<v[m]) m=j; scambia (v, m, k); } }
int main(){ int* a; int* b; int valore1; int valore2; a=&valore1; b=&valore2; *a=10; *b=20; scambia(a,b); printf("%d,%d",*a,*b); return 0; }
void bubbleSort (int *v, int n) { int noScambi=1; int i, j; for (i=0; i<n-1; i++) { for (j=1; j<n-i; j++) if (v[j-1]>v[j]) { scambia (v, j-1, j); noScambi=0; } if (noScambi) break; else noScambi=1; } }
void quicksort(int inizio,int fine) { int i,j,pivot; i=inizio; j=fine; pivot=(V[i]+V[j])/2; do { while(V[i]<pivot) i++; while(V[j]>pivot) j--; if(i<=j) { scambia(&V[i],&V[j]); i++; j--; } } while(i<=j); if(inizio<j) quicksort(inizio,j); if(fine>i) quicksort(i,fine); }
/* * Inizializza la tabella del sudoku * generando uno schema */ void inizializza(int spazi){ int base[n][n] = {\ {6,9,7,1,4,3,8,2,5},\ {4,1,8,9,2,5,6,3,7},\ {2,5,3,8,7,6,4,9,1},\ {7,3,2,4,6,8,5,1,9},\ {8,4,9,3,5,1,7,6,2},\ {5,6,1,2,9,7,3,8,4},\ {3,8,4,7,1,9,2,5,6},\ {1,2,6,5,3,4,9,7,8},\ {9,7,5,6,8,2,1,4,3}\ }; int sostituzioni[9]; /* genera uno schema * facendo delle sostituzione * in uno di partenza. */ for(int l=0; l<25; l++){ int *r; //scambia riga r = randomd(); for(int i=0; i<n; i++){ for(int k=0; k<n; k++) sostituzioni[k] = base[i][k]; for(int s=0; s<9; s++) if (sostituzioni[s] == r[0]) sostituzioni[s] = r[1]; else if (sostituzioni[s] == r[1]) sostituzioni[s] = r[0]; for(int p=0; p<9; p++) for(int q=0; q<9; q++) base[i][q] = sostituzioni[q]; } //scambia colonna r = randomd(); for(int i=0; i<n; i++){ for(int k=0; k<n; k++) sostituzioni[k] = base[i][k]; for(int s=0; s<9; s++) if (sostituzioni[s] == r[0]) sostituzioni[s] = r[1]; else if (sostituzioni[s] == r[1]) sostituzioni[s] = r[0]; for(int p=0; p<9; p++) for(int q=0; q<9; q++) base[q][i] = sostituzioni[q]; } } for(int l=0; l<25; l++){ int r = randomr(0,3); switch(r){ //colonna centrale fissa case 0:{ for(int i=0; i<9; i++){ for(int k=0; k<9; k++) sostituzioni[k] = base[i][k]; for(int j=0; j<9; j++) if(j != 4) base[i][j] = sostituzioni[8-j] ; } break; } //riga centrale fissa case 1:{ for(int k=0; k<9; k++){ for(int i=0; i<9; i++) sostituzioni[i] = base[i][k]; for(int j=0; j<9; j++) if(j!=4) base[j][k] = sostituzioni[8-j]; } break; } //inversione riga 3-5 case 2:{ for(int i=0; i<9; i++) scambia(&base[3][i], &base[5][i]); break; } } } //inserisci gli spazi for(int i=0; i<spazi; i++){ int unico = 0; //la casella รจ valida do{ int x = randomr(0,9); int y = randomr(0,9); if(!base[x][x]) unico = 1; else { base[x][y] = 0; unico = 0; } }while(unico == 1); } //copia lo schema generato nella matrice for(int i=0; i<n; i++) for(int k=0; k<n; k++){ sudoku[i][k][0] = base[i][k]; if(!base[i][k]) sudoku[i][k][1] = 1; } }