Menu
CoddyTech

N-Queens II

DifícilBacktrackingpython iconjava iconcpp iconc iconjs icon+10

Uma rainha em um tabuleiro de xadrez ataca todas as casas de sua linha, de sua coluna e de ambas as diagonais, por mais distantes que estejam. Você recebe um inteiro n. Retorne o número de maneiras de posicionar n rainhas em um tabuleiro n × n de modo que nenhuma rainha ataque outra.

Duas maneiras são diferentes quando alguma casa contém uma rainha em uma delas e está vazia na outra. Portanto, um tabuleiro e sua imagem espelhada contam como duas maneiras, embora pareçam iguais.

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 de cada linha de cima para baixo, os dois tabuleiros são 1, 3, 0, 2 e 2, 0, 3, 1. Cada um é a imagem espelhada do outro, e eles contam como duas soluções. Qualquer outra escolha coloca duas rainhas na mesma coluna ou diagonal.

lock icon+10 testes ocultos ao enviar

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
Casos de teste

Caso 1

Caso 2

Entrada

n = 4

Esperado

2