static Boolean SolveSudoku(int[,] grid)
for (int i = 0; i < N; i++)
for (int j = 0; j < N; j++)
for (int num = 1; num <= 9; num++)
if (isSafe(grid, row, col, num))
static Boolean isSafe(int[,] grid,
for (int d = 0; d < N; d++)
for (int r = 0; r < N; r++)
int sqrt = (int)Math.Sqrt(N);
int boxRowStart = row - row % sqrt;
int boxColStart = col - col % sqrt;
for (int r = boxRowStart;
r < boxRowStart + sqrt; r++)
for (int d = boxColStart;
d < boxColStart + sqrt; d++)
static void printGrid(int[,] grid)
for (int row = 0; row < N; row++)
for (int col = 0; col < N; col++)
Console.Write(grid[row,col] + " ");
static int[,] fillGrid(int[,] grid)
for (int i = 0; i < N; i++)
for (int j = 0; j < N; j++)
grid[i,j] = r.Next(1, 10);
public static void Main()
int[,] grid = new int[N,N];
if (SolveSudoku(grid) == true)
Console.WriteLine("Çözülemez");