Hallo ich mache gerade ein Projekt in C. Es geht darum Sudoku's zu erstellen. Ich weiß, dass ich dass irgendwie über Backtracking machen muss. Habe aber keine Ahnung wie ich das machen soll.
Kann mir da jemand helfen?
Mein Lösungsansatz sah wie folgt aus, hängt sich aber natürlich dann irgendwann auf.
Ein Auszug:
Alles anzeigen
Kann mir da jemand helfen?
Mein Lösungsansatz sah wie folgt aus, hängt sich aber natürlich dann irgendwann auf.
Ein Auszug:
Quellcode
- printf("Alles auf Null Setzen ...\n");
- for(j=0;j<9;j++) for(i=0;i<9;i++) s_matrix [j][i] = 0;
- printf("Starte Erstellung ...\n");
- srand( (unsigned)time( NULL ) );
- for(Laufzahl=1;Laufzahl!=10;Laufzahl++)
- {
- for(Verteilt=0;Verteilt!=9;)
- {
- j = (((double) rand() / (double) RAND_MAX) * 9 + 0);
- i = (((double) rand() / (double) RAND_MAX) * 9 + 0);
- printf("l%d\tv%d\tz%d\ts%d\n",Laufzahl,Verteilt,j,i);
- check = (s_matrix [j][i]); //Ist das Feld schon belegt (alle Felder sind von vorne mit "0" belegt)
- if ( check == 0 ) check = test_ispalte(&s_matrix[0][i],Laufzahl); //Test Spalte (Funktion) wenn "0" dann OK
- if ( check == 0 ) check = test_jzeile(&s_matrix[j][0],Laufzahl); //Test Zeile (Funktion) wenn "0" dann OK
- if ( check == 0 ) check = test_box(&s_matrix[0][0],j,i,Laufzahl); //Test 3*3Feld (Funktion) wenn "0" dann OK
- if ( check == 0) // Wenn alles OK dann setzen
- {
- s_matrix [j][i] = Laufzahl;
- Verteilt++;
- }
- }
- }