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++;
- }
- }
- }
Ich wußte gar nicht das es in C bool gibt, gibt es doch auch nicht oder. C verwendet für
Kannst du mir noch erklären wo und wie du jetzt Backtracking benutzt und was die Funktion inline bool test_feld(int feld[9][9]) eigentlich macht, steig ich irgendwie net so ganz dahinter?! Und was bedeutet inline?