Sudoku Çözücü
Geri İzleme O(9^m) O(m)Boş hücreleri teker teker doldurur; 1–9 rakamlarını dener ve bir rakam kuralları bozduğunda geri izler.
Hazır bir bulmaca çözülüyor — rakamların denenip yerleştirilip geri alınışını izleyin.
1/94
(0, 1) konumunda boş göz — doldurulmaya çalışılıyor.
DeğişmezDolu her göz satır, kolon ve kutu kuralını sağlar. Bir rakam ancak kural hâlâ geçerliyken yerleştirilir.
sudoku.c
int valid(int g[9][9], int r, int c, int d) {for (int i = 0; i < 9; i++) {if (g[r][i] == d || g[i][c] == d)return 0;if (g[3*(r/3) + i/3][3*(c/3) + i%3] == d)return 0;}return 1;}int solve(int g[9][9]) {for (int r = 0; r < 9; r++) {for (int c = 0; c < 9; c++) {if (g[r][c]) continue;for (int d = 1; d <= 9; d++) {if (valid(g, r, c, d)) {g[r][c] = d;if (solve(g)) return 1;g[r][c] = 0; /* backtrack */}}return 0;}}return 1;}
Sudoku Çözücü nasıl çalışır?
Sıradaki boş hücreyi bul, 1–9 rakamlarını dene, kalan ızgarada özyinele ve çıkmaz kanıtlanınca rakamı sil. Kısıt kontrolleri dallanmayı küçük tutar.
Ne zaman kullanılır?
Kısıt sağlama bulmacaları; aynı iskelet planlama ve boyama örneklerini de çözer.