Exemplo n.º 1
0
        static bool BacktrackingSudoku(Tabuleiro tab, int linha, int coluna, int valor = 999)
        {
            if (linha >= 9)
            {
                Console.WriteLine("Terminou");
                Console.Write(tab);
                Console.ReadKey();
                return(true);
            }

            if (coluna >= 9)
            {
                return(BacktrackingSudoku(tab, linha + 1, 0));
            }


            for (int i = 1; i < 10; i++)
            {
                if (tab.Insere(linha, coluna, i))
                {
                    var b2 = BacktrackingSudoku(tab, linha, coluna + 1);
                    if (b2)
                    {
                        return(true);
                    }
                    else
                    {
                        tab.Remove(linha, coluna + 1);
                    }
                }
            }

            return(false);
        }