Menu
CoddyTech

N-Queens II

DifícilBacktrackingpython iconjava iconcpp iconc iconjs icon+10

Uma rainha ataca todas as casas de sua linha, de sua coluna e de ambas as diagonais, independentemente da distância. Dado um inteiro n, retorne o número de maneiras de posicionar n rainhas em um tabuleiro n × n de modo que nenhuma delas ataque outra.

Tabuleiros que diferem em qualquer casa são contabilizados separadamente, incluindo imagens espelhadas.

Função

totalNQueens(n: integer) → integer
ninteger
o tamanho do tabuleiro e o número de rainhas
Retornainteger
o número de maneiras de posicionar as rainhas de modo que nenhuma ataque outra

Restrições

  • 1 ≤ n ≤ 12
  • A resposta para n = 12 é 14.200, então cabe em um inteiro de 32 bits.

Exemplos

Entrada
n = 4
Saída
2
Explicação
Escrevendo a coluna da rainha em cada linha, de cima para baixo, os tabuleiros são 1, 3, 0, 2 e 2, 0, 3, 1: imagens espelhadas, contadas como duas. Todas as outras escolhas colocam duas rainhas na mesma coluna ou diagonal.
challenge icon

Para ir além

Você consegue contar apenas os tabuleiros que continuam diferentes após girar e espelhar o tabuleiro? Para n = 8, os 92 tabuleiros se dividem em 12 grupos desse tipo.

Redefinir código
def totalNQueens(n):
    # Escreva o código aqui

Teste #1

Teste #2

Argumento

n = 4

Saída Esperada

2