Published using Google Docs
Sudoku Çözücü
Updated automatically every 5 minutes

#include <iostream>

#include <stdio.h>

using namespace std;

int sudoku[10][10], satir[9][10], sutun[9][10], kareler[3][3][10];

void isaretle(int a, int b, int gelenSayi, int sil) {

    if (!sil) {

        sudoku[a][b] = gelenSayi;

        satir[a][gelenSayi] = 1;

        sutun[b][gelenSayi] = 1;

        kareler[a/3][b/3][gelenSayi] = 1;

        return;

    }

    satir[a][gelenSayi] = 0;

    sutun[b][gelenSayi] = 0;

    kareler[a/3][b/3][gelenSayi] = 0;

    sudoku[a][b] = 0;

}

void sayiYerlestir (int i, int j) {

    if (i==9 && j==0) {

        for (int m = 0; m < 9; m++) {

            for (int n = 0; n < 9; n++) {

                cout << sudoku[m][n] << " ";

            } cout << endl;

        }

        exit(0);

    }

    if (sudoku[i][j]) {

        if (j<=7) sayiYerlestir(i, j+1);

        else sayiYerlestir(i+1, 0);

        return;

    }  

    for (int x = 1; x<=9; x++)

        if (!satir[i][x] && !sutun[j][x] && !kareler[i/3][j/3][x]){

            isaretle(i, j, x, 0);

            sayiYerlestir(i, j);

            isaretle(i, j, x, 1);

        }

}

int main(int argc, const char * argv[]) {     

 

    printf("Sudokuyu bos olan yerlerin yerine 0 gelecek şekilde, her bir sayı arasında boşluk olacak şekilde yazınız.\n");

    for (int i = 0; i < 9; i++)

        for (int j = 0; j < 9; j++) {

            cin >> sudoku[i][j];

            if (sudoku[i][j]) isaretle(i, j, sudoku[i][j], 0);

        }

    cout << endl;

    sayiYerlestir(0, 0);

    return 0;

}